如何比较两个字典并检查是否有新项目

时间:2018-05-22 18:46:05

标签: python python-3.x python-2.7 dictionary

如何比较两个dict并检查是否有新项目,例如在第二个dict中有CCC,如何比较并获得新变量中的CCC。

dict1 = {'AAA': '0.23444', 'BBB': '0.5343'}
dict2 = {'AAA': '0.34343', 'BBB': '0.3435', 'CCC': '0.53322'}

2 个答案:

答案 0 :(得分:7)

要查找dict2中未在dict1中出现的密钥,您可以使用差异:

res = dict2.keys() - dict1.keys()

{'CCC'}

然后,您可以通过此设置访问键值组合:

res_d = {k: dict2[k] for k in res}

{'CCC': '0.53322'}

请注意,在Python 3中,dict.keys()是一个可以直接使用的视图,就像它是一个集合一样,这就是为什么不需要转换为set的原因。

您还可以使用词典理解来组合这些步骤:

res_d = {k: dict2[k] for k in dict2.keys() - dict1.keys()}

答案 1 :(得分:0)

'''
OP wants to compare too dicts. If there is a different (new) key in one of the
dicts, he wants to add that value to dict1
'''

dict1 = {'AAA': '0.23444', 'BBB': '0.5343'}
dict2 = {'AAA': '0.34343', 'BBB': '0.3435', 'CCC': '0.53322'}

for key, value in dict2.items():
   if key not in dict1:
      dict1[key] = value

print(dict1)

我们可以迭代第二个字典中的每个键,如果它没有出现在第一个字典中,我们可以在最后添加它。这是输出:

{'AAA': '0.23444', 'BBB': '0.5343', 'CCC': '0.53322'}