python - 有没有更好的方法来比较字典值

标签 python dictionary

我目前正在使用以下函数来比较字典值并显示所有不匹配的值。有更快或更好的方法吗?

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/

相关文章:

c# - 比较出错 c# Dictionary<String, string[]>

python - 如何对字典列表求和

python - Python中的增量最近邻算法

python - 从二叉树中删除一个节点及其所有子节点,而不使用树数据结构

python - 扁平化python中每个键的值

java - 在Java中访问具有一个元素的Map的键值对

Python字典理解访问不存在的键

python - 在 for 循环中返回所有值

python - for/if循环和python中变量的范围

python - 如何让剪刀石头布游戏的代码不那么冗余?