对字典进行pythonical转换
我有两条格言:对字典进行pythonical转换,python,Python,我有两条格言: dict1 = {'field1':'value1', 'field2':'value2',...... } dict2 = {'field1':'value1_1', 'field2':'value2_2','field3':'value3_3'} 我希望dict1的field1和field2的值是dict2的field1和field2的值 所以我希望dict1是:dict1={'field1':'value1_1','field2':'value2_2'},但是dict1有
dict1 = {'field1':'value1', 'field2':'value2',...... }
dict2 = {'field1':'value1_1', 'field2':'value2_2','field3':'value3_3'}
我希望dict1的field1和field2的值是dict2的field1和field2的值
所以我希望dict1是:dict1={'field1':'value1_1','field2':'value2_2'}
,但是dict1有许多其他键/值对不在dict2中,我希望它们保持不变
做这件事最像蟒蛇的方式是什么?可能是这样的:
dict1.update({key : dict2[key] for key in dict1 if key in dict2})
或者使用一个简单的循环:
for key in dict1:
if key in dict2:
dict1[key] = dict2[key]
您可以尝试听写理解:
dict1 = {key : value for key, value in dict2.iteritems() if key in dict1}
看到穆阿德的答案后编辑:
dict1 = {key : dict2[key] for key in dict1}
或者
dict1.update()
,如果在适当的位置更新dict1很重要——尽管您的简单循环也做了同样的事情。谢谢。但有一个新的限制,见更新的原始帖子。我不认为这在语法上是正确的。它会吐出错误。try:dict1[key]=dict2[key]除了KeyError:pass之外,如果你能假设dict1键经常出现在dict2中,我想可能会更有效。但这毕竟是一种优化。