我只有一个问题,如果在我的一本字典中我的值(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/