我创建了两个字典,我希望将它们组合起来,如下所示:
dict1 = {'temp1':[1,2,3,4]}
dict2 = {'temp1': [3,4,5],'temp2':[15,16,17]}
dict1.update(dict2)
我希望得到这个:
dict1 = {'temp1': [1, 2, 3, 4, 5], 'temp2': [15, 16, 17]}
但我得到的是这个:
dict1 = {'temp1': [3, 4, 5], 'temp2': [15, 16, 17]}
如何更新和过滤掉字典列表中的重复项?
最佳答案
dict.update
替换现有键下的值,这解释了您得到的结果(您的值是整数列表,但是 update
方法不知道这一点,也不知道如何合并数据)
在这里,您创建了一个专门的字典,其值是整数列表。
您想要的是一个自定义合并功能。
我将使用字典理解对键的联合重建第三个字典,并将列表合并为一个集合(对于唯一性),然后返回列表:
dict1 = {'temp1':[1,2,3]}
dict2 = {'temp1': [3,4,5],'temp2':[15,16,17]}
dict3 = {k:list(set(dict1.get(k,[])+dict2.get(k,[]))) for k in set(dict2) | set(dict1)}
print(dict3)
结果:
{'temp2': [16, 17, 15], 'temp1': [1, 2, 3, 4, 5]}
dict1.get(k,[])
的神奇之处在于,如果键不存在,它会返回一个空列表,因此 +
可以工作并且表达式并不太复杂。
由于在某些时候使用了集合
,因此无法保证元素的顺序。您可以使用 sorted(set ...)
而不是简单转换为 list
来保证整数值已排序。
关于python - 如何更新词典及其列表内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352094/