簡體   English   中英

僅在python中的兩個字典中比較匹配鍵的值

[英]Only compare values of matching keys in two dictionaries in python

簡單比較的最Python方式是什么:

dict1 = {'Class1': 10, 'Class2': 18, 'Class3': 5}
dict2 = {'Class1': 10, 'Class2': 18, 'Class4': 11}

for key in dict1:
    for key2 in dict2:
        if key == key2:
            self.assertEqual(dict1[key], dict2[key2])

我覺得我做一個嵌套的for循環來比較所有dict2鍵和dict1中的每個鍵的解決方案效率低下。 目的是僅比較dict1和dict2都具有的鍵的值。

您可以獲得迭代和比較的關鍵交集

dict1.keys() & dict2.keys()

例如,

>>> {k: (dict1[k], dict2[k]) for k in dict1.keys() & dict2.keys()}
{'Class1': (10, 10), 'Class2': (18, 18)}

# or 

>>> for k in dict1.keys() & dict2.keys():
        print(dict1[k], dict2[k])

18 18
10 10

以@Mitch的答案為基礎,您可以在all進行比較:

dict1 = {'Class1': 10, 'Class2': 18, 'Class3': 5}
dict2 = {'Class1': 10, 'Class2': 18, 'Class4': 11}
all(dict1[k] == dict2[k] for k in dict1.keys() & dict2.keys())

或者您的情況:

self.assertTrue(all(dict1[k] == dict2[k] for k in dict1.keys() & dict2.keys()))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM