Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对字典进行pythonical转换_Python - Fatal编程技术网

对字典进行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中,我想可能会更有效。但这毕竟是一种优化。