比较上两个更有价值的字典

2024-09-28 20:58:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我只有一个问题,如果在我的一本字典里我比另一本字典更有价值,我还能比较这两本字典还是我必须改变我的代码?例如:

我的代码:

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}

Tags: key代码inforif字典notresult
3条回答

这是一种使用dict.get的方法

例如:

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

for key, value in result.items():
    if value != result2.get(key, 0):  #You can add additional condition to check if key present in `result2`
        print("%s not equal"% (key))

输出:

jazi not equal
juge not equal
juha not equal

像其他人所建议的那样使用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))

可以,但不能使用dict['key']dict.get('key')。下面是代码,它不会给你一个错误的任何数量的关键。你知道吗

for key in result:
    if result.get(key, "")!= result2.get(key, ""):
        print("%s not equal"% (key))

相关问题 更多 >