gpt4 book ai didi

python - 我可以比较两个顺序不同的字典的键吗?

转载 作者:行者123 更新时间:2023-11-28 19:55:10 27 4
gpt4 key购买 nike

抱歉,这一定是使用词典的基本问题。我正在学习 python,我的目标是比较两个字典并从两个相同的条目中恢复键和值条目。我知道字典中的顺序与处理列表无关。但我采用了一种代码来比较我的词典,我只是想确保词典的顺序无关紧要。

到目前为止我写的代码是:

def compare_dict(first,second): 
with open('Common_hits_python.txt', 'w') as file:
for keyone in first:
for keytwo in second:
if keytwo == keyone:
if first[keyone] == second[keytwo]:
file.write(keyone + "\t" + first[keyone] + "\n")

如有任何建议,我们将不胜感激。对于上面代码中的冗余,我深表歉意。但是,如果有人可以确认以这种方式比较两个词典不需要键的顺序相同,那就太好了。其他编写函数的方法也将非常感激。

最佳答案

由于您遍历了两个词典并比较了所有组合,所以不,顺序无关紧要。最终,将一个字典中的每个键与另一个字典中的每个键进行比较。

但是,这并不是一种非常有效的测试匹配键的方法。测试一个键是否存在就像 keyone in second 一样简单,不需要在这里遍历 second 中的所有键。

更好的是,您可以改用集合交叉点:

for key, value in first.viewitems() & second.viewitems():
# loops over all key - value pairs that match in both.
file.write('{}\t{}\n'.format(key, value))

这使用 dictionary view objects ;如果您使用的是 Python 3,则可以使用 first.items() & second.items() 作为字典,默认情况下会返回字典 View 。

使用 dict.viewitems() 作为集合仅在值也可散列时才有效,但由于您在写入文件时将您的值视为字符串,我假设它们是。

如果您的值不可散列,您将需要验证这些值是否匹配,但您仍然可以使用 View 并仅与键相交:

for key in first.viewkeys() & second.viewkeys():
# loops over all keys that match in both.
if first[key] == second[key]:
file.write('{}\t{}\n'.format(key, first[key]))

同样,在 Python 3 中,使用 first.keys() & second.keys() 通过键对两个字典进行交集。

关于python - 我可以比较两个顺序不同的字典的键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29944801/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com