python - 如何更新词典及其列表内容?

标签 python list dictionary

我创建了两个字典,我希望将它们组合起来,如下所示:

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/

相关文章:

python - 删除多对多关系的成员 Django Rest Framework

python - stem - 无法通过 tor 使用 python 获取新的 ip

java - 如何在 Java 中保持列表索引固定

r - 计算列表中的值

javascript - 如何在 JavaScript 中迭代(键、值)?

python - 字典中列表的联合

python - 通过 child_process 从 Python 向 Node 发送 JSON 如果太长会被截断,如何修复?

python - 类中的循环导入

list - SwiftUI 列表行填充宽度

c++ - O(1) 时间内平衡二进制搜索时间中的最小/最大元素