使用套装或关键视图(python 2.7) http://docs.python.org/library/stdtypes.html#dict.viewkeys:
dictAB = {k: [dictA[k], dictB[k]] for k in dictA.viewkeys() & dictB.viewkeys()}
2.7之前:
dictAB = dict((k, [dictA[k], dictB[k]]) for k in set(dictA) & set(dictB))
在Python 3中,你可以使用.keys
直接执行此类操作的方法,因为它们是作为视图实现的:
dictAB = {k: [dictA[k], dictB[k]] for k in dictA.keys() & dictB.keys()}
演示(Python 2.7):
>>> dictA = {'key1':'Joe', 'key2':'Bob'}
>>> dictB = {'key1':'Smith', 'key2':'Johnson'}
>>> dictAB = {k: [dictA[k], dictB[k]] for k in dictA.viewkeys() & dictB.viewkeys()}
>>> print dictAB
{'key2': ['Bob', 'Johnson'], 'key1': ['Joe', 'Smith']}
The &
两个集合或字典视图上的运算符创建两个集合的交集;两组中都存在的所有键。
通过使用键的交集,即使 dictA 或 dictB 具有未出现在另一个字典中的键,此代码也将起作用。如果您绝对确定键将始终匹配,则可以直接迭代任一字典而无需交集:
dictAB = {k: [dictA[k], dictB[k]] for k in dictA}