使用了一組找到所有的等同物:
for (key, value) in set(aa.items()) & set(bb.items()):
print '%s: %s is present in both aa and bb' % (key, value)
這裏的&
運營商爲您提供了intersection of both sets;或者你可以寫:
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,該字典類型包括additional methods直接創建所需的組:
for (key, value) in aa.viewitems() & bb.viewitems():
print '%s: %s is present in both aa and bb' % (key, value)
這些都是技術上dictionary views但對於這個問題的目的,他們的行爲是相同的。
什麼是你想要的結果?你是否想要一個布爾值來指示'aa'中的* all *鍵是否也出現在'bb'中具有匹配值?或每個鍵一個布爾值?或者爲每個匹配的鍵/值對打印一次「aa和bb中的鍵和值匹配」的代碼? –
嗯......通過遍歷'aa'(提示,與'aa.iterkeys()')相同的方式來看問題,你的基本方法其實很好。你究竟想要改進什麼? – SingleNegationElimination
我總覺得其他人似乎都明白Rajeev最初想做什麼。然而,對完全不同的東西的答案... –