python - 比较两个字典中的更多值

标签 python python-3.x list dictionary

我只有一个问题,如果在我的一本字典中我的值(value)高于另一本,我仍然可以比较这两个字典还是我必须更改我的代码?例如像这样:

我的代码:

for key in result:
     if result[key]!=result2[key]:
            print("%s not equal"% (key))

输出:


result={"jazi": 1, "juge": 1, "juha": 9, "lebe": 4}
result2={"jazi": 3, "juge": 4, "juha": 1, "lebe": 4, "aba":7, "meze":9}

最佳答案

像其他人建议的那样使用 get() 是最简单的解决方案,但如果您愿意,您可以比仅仅说“不等于”更具体:

result={"jazi": 1, "juge": 1, "juha": 9, "lebe": 4}
result2={"jazi": 3, "juge": 4, "juha": 1, "lebe": 4, "aba":7, "meze":9}

print("Only in result:", ", ".join(set(result).difference(result2)))
print("Only in result2:", ", ".join(set(result2).difference(result)))

for key in set(result).intersection(result2):
     if result[key]!=result2[key]:
            print("%s not equal"% (key))

给予:

Only in result: 
Only in result2: aba, meze
juha not equal
jazi not equal
juge not equal

或者可能更清楚一点:

keys, keys2 = set(result), set(result2)
print("Only in result:", ", ".join(keys - keys2))
print("Only in result2:", ", ".join(keys2 - keys))

for key in keys & keys2:
     if result[key]!=result2[key]:
            print("%s not equal"% (key))

这完全相同,但预先计算了集合,因此您可以使用内联运算符 - 表示 .difference()& 表示.intersection().

或者如果您只是想要“不等于”消息:

keys, keys2 = set(result), set(result2)

for key in (keys ^ keys2) | {
        key for key in keys & keys2 if result[key] != result2[key] }:
    print("%s not equal"% (key))

关于python - 比较两个字典中的更多值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59102330/

相关文章:

python - 如何在 View 中的 Odoo 11 中从组标签中删除标签

python-3.x - Groupby id 并在大矩阵 (3x3 mio.) 上展开(或求和)

python - __iter__ 返回迭代器对象本身的目的是什么?

python - 重新排列列表中的项目,使得没有两个相邻项目是相同的

c# - 与 C# 中的现有列表相比,如何对列表进行排序?

python - 从内存地址构造数组

python cgi + 用于运行批处理命令的网络界面?

python - 操作系统错误: [Errno 48] Address already in use

python - libpng 警告 : interlace handling should be turned on when using png_read_image in Python/PyGame

python - 从元组列表中提取数据