只比较python中两个词典中匹配键的值

时间:2017-02-17 17:12:32

标签: python dictionary for-loop

简单比较最简单的方式是什么:

pyspark.ml

我觉得我做嵌套for循环的解决方案是将所有dict2键与dict1中的每个键进行比较是效率低下的。目标是仅比较dict1和dict2所具有的键的值。

2 个答案:

答案 0 :(得分:3)

您可以获得要与

进行迭代和比较的关键交集
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

答案 1 :(得分:2)

根据@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()))