python - 如何在列表之外的字典中合并键?
问题描述
您好,我试图获取具有相同键的字典并合并其值,如果存在重复,则只保留一个重复值。
data = {"test1":["data1", "data2"],
"test1":["data3", "data4", "data2"],
"test2":["1data", "2data"],
"test2":["3data", "4data", "2data"]
}
desired_result = {"test1":["data1", "data2", "data3", "data4"],
"test2":["1data", "2data", "3data", "4data"]
}
任何想法如何获得结果?
解决方案
首先,您需要创建list
of dict
(因为您不能拥有具有相同键的字典)然后遍历它们并将extend
它们list
与key
ofdict
然后set
用于删除duplicated
,如下所示:
data = [{"test1":["data1", "data2"]},{"test1":["data3", "data4", "data2"]},{"test2":["1data", "2data"]},{"test2":["3data", "4data", "2data"]}]
from collections import defaultdict
rslt_out = defaultdict(list)
for dct in data:
for k,v in dct.items():
rslt_out[k].extend(v)
for k,v in rslt_out.items():
rslt_out[k] = list(set((v)))
print(rslt_out)
输出:
defaultdict(list,
{'test1': ['data3', 'data4', 'data2', 'data1'],
'test2': ['2data', '3data', '1data', '4data']})
推荐阅读
- javascript - 我如何成功地控制台记录来自这个 api 的数据?
- c# - 如何从此 Firebase Cloud Messaging unity C# 获取消息文本?
- python - 模块“skimage.filters”没有属性“gaussian_filter”
- vuetify.js - 对话转换完成后的回调
- jquery - AJAX 错误响应中的 responseJSON 返回 undefined
- c++ - c++ – 消失的变量
- python - Unicode 字符串编码 Python
- r - 在背景中的反应值变化上绘制 ggplot,在非焦点选项卡上
- c++ - std::map C2678 二进制“<”:未找到采用“const sockaddr_in”类型的左侧操作数的运算符
- android - 仅在 CoordinatorLayout 中滚动时显示工具栏阴影