集合を使ってすべての等価物を見つける:
for (key, value) in set(aa.items()) & set(bb.items()):
print '%s: %s is present in both aa and bb' % (key, value)
ここでの&
演算子は、両方のセットの交点を提供します。あるいは、次のように書くこともできます:
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)
ここでは、各 dict のキーのみをコピーして、メモリ フットプリントを削減します。
Python 2.7 を使用する場合、dict タイプには、必要なセットを直接作成するための追加のメソッドが含まれます。
for (key, value) in aa.viewitems() & bb.viewitems():
print '%s: %s is present in both aa and bb' % (key, value)
これらは技術的にはディクショナリ ビューですが、この問題の目的では同じように動作します。