python,使用理解选择性地将值从一个字典弹出到另一个字典

时间:2015-08-21 20:32:22

标签: python dictionary dictionary-comprehension

如何将此函数转换为字典理解?有可能吗?

info['dict1'] = {}
dict2 = {'one': 1}

for x in ['one', 'two']:
    info['dict1'].update({x:dict2.pop(x, None)})

这是我尝试过的,效果不好,似乎没有任何事情发生。信息保持空白:

(info['dict1'].update({x:dict2.pop(x)}) for x in ['one', 'two'])

打印输出显示信息保持为空... {'dict1': {}}

2 个答案:

答案 0 :(得分:2)

当然是:

info['dict1'] = {x: dict2.pop(x, None) for x in ['one', 'two']}

不要使用理解副作用;他们首先产生一个列表,集合或字典。在上面的代码中,info['dict1'] new 字典对象是由字典理解产生的。

如果 更新现有字典,请使用dict.update()生成键值对的生成器表达式:

info['dict1'].update((x, dict2.pop(x, None)) for x in ['one', 'two'])

答案 1 :(得分:1)

您可以使用密钥创建带有dict的info,并使用dict comp ad值。

dict2 = {'one': 1}
info = {'dict1': {x: dict2.pop(x, None) for x in ['one', 'two']} }
print(info)