我目前正在使用以下函数来比较字典值并显示所有不匹配的值。有更快或更好的方法吗?
match = True
for keys in dict1:
if dict1[keys] != dict2[keys]:
match = False
print keys
print dict1[keys],
print '->' ,
print dict2[keys]
编辑:两个字典都包含相同的键。
最佳答案
如果问题的真正意图是字典之间的比较(而不是打印差异),那么答案是
dict1 == dict2
这在之前已经提到过,但我觉得它有点淹没在其他信息中。看起来很表面,但dicts的值比较实际上具有强大的语义。它涵盖了
- 键的数量(如果它们不匹配,则字典不相等)
- 键名(如果不匹配,则不相等)
- 每个键的值(它们也必须是 '==')
最后一点再次显得微不足道,但非常有趣,因为这意味着所有这些递归地应用也适用于嵌套字典。例如
m1 = {'f':True}
m2 = {'f':True}
m3 = {'a':1, 2:2, 3:m1}
m4 = {'a':1, 2:2, 3:m2}
m3 == m4 # True
列表比较存在类似的语义。所有这一切使得它变得不费吹灰之力。比较深层 Json 结构,仅使用简单的“==”。
关于python - 有没有更好的方法来比较字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1911273/