Skip to main content
 首页 » 编程设计

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

2025年05月04日18shihaiming

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