dict1.update((k, dict2[k]) for k in set(dict2).intersection(dict1))
是我如何在 Python 2.6 或更低版本中执行此操作(有关如何在更高版本中执行此操作的详细信息,请参阅)。
在另一个映射旁边,dict.update()
也可以采用(key, value)
元组的可迭代,我们基于两个字典的集合交集生成它(因此它们具有共同的所有键)。
演示:
>>> dict1 = {'foo':'bar', 'ham': 'eggs'}
>>> dict2 = {'ham': 'spam', 'bar': 'baz'}
>>> dict1.update((k, dict2[k]) for k in set(dict2).intersection(dict1))
>>> dict1
{'foo': 'bar', 'ham': 'spam'}
在 python 2.7 中,您可以使用新的Dict 视图来实现相同的效果,而无需转换为集合:
dict1.update((k, dict2[k]) for k in dict1.viewkeys() & dict2.viewkeys())
在 Python 3 中,dict 视图是默认视图,因此您可以将其拼写为:
dict1.update((k, dict2[k]) for k in dict1.keys() & dict2.keys())