我正在尝试将字典理解和内联if语句结合起来。
理解会遍历所有项目,只要该项目没有键id
它会创建一个新密钥:job[old_key]



job = {'id':1234, 'age':17, 'name':'dev'}
args = {'job[%s]' % k:v if k != 'id' else k:v for k, v in job}


希望输出

print args
{'id':1234, 'job[age]':17, 'job[name]':'dev'}


提出了SyntaxError

args = {'job[%s]' % k:v if k != 'key' else k:v for k, v in job}
                                            ^
SyntaxError: invalid syntax


但是,当我尝试运行脚本时,Python会抱怨k:v
如何结合字典理解和内联if语句?

注意:我知道我可以通过for循环轻松完成该任务,但是我只想
结合这两个要素。

最佳答案

键和值部分是单独的表达式。仅在关键部分中使用条件表达式:

args = {'job[%s]' % k if k != 'id' else k: v for k, v in job.iteritems()}


:不是任何一个表达式的一部分,仅是字典理解语法的一部分。您还需要遍历键和值。在Python 2中,使用job.iteritems(),Python 3,job.items()

演示:

>>> job = {'id':1234, 'age':17, 'name':'dev'}
>>> {'job[%s]' % k if k != 'id' else k: v for k, v in job.iteritems()}
{'id': 1234, 'job[age]': 17, 'job[name]': 'dev'}

关于python - 如果用inline如何使字典理解?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21728565/

10-11 18:10