使用集合查找所有等效项:
for (key, value) in set(aa.items()) & set(bb.items()):
print '%s: %s is present in both aa and bb' % (key, value)
&
这里的算子给你@L_301_0@的相交; 或者,您可以编写:
set(aa.items()).intersection(set(bb.items()))
请注意,这确实会创建两个字典的完整副本,因此,如果它们非常大,则这可能不是最佳方法。
快捷方式是仅测试按键:
for key in set(aa) & set(bb):
if aa[key] == bb[key]:
print '%s: %s is present in both aa and bb' % (key, value)
在这里,您仅复制每个字典的键以减少内存占用。
使用Python 2.7时,dict类型包含其他方法来直接创建所需的集合:
for (key, value) in aa.viewitems() & bb.viewitems():
print '%s: %s is present in both aa and bb' % (key, value)
这些在技术上是字典视图,但是出于此问题的目的,它们的作用相同。