我有一个字典列表,
_list = [
{"a": [1, 20, 20, 40], "b": [0, 14, 14, 28]},
{"a": [2, 20, 20, 40], "b": [2, 14, 14, 28]},
{"c": [1, 20, 20, 40], "d": [0, 14, 14, 28]},
]
我想合并这些字典并得到一个单独的字典,如果键相同,我希望它们的列表值被合并,我希望最终结果是这样的:
_dict = {
"a": [3, 40, 40, 80],
"b": [2, 28, 28, 56],
"c": [1, 20, 20, 40],
"d": [0, 14, 14, 28]
}
我不知道从哪里开始以及遵循什么方法,你能帮我得到想要的输出吗? 谢谢
答案 0 :(得分:1)
这是一个基本的解决方案,不是最有效但有效的:
_list = [
{"a": [1, 20, 20, 40], "b": [0, 14, 14, 28]},
{"a": [2, 20, 20, 40], "b": [2, 14, 14, 28]},
{"c": [1, 20, 20, 40], "d": [0, 14, 14, 28]},
]
_dict = {}
for dict_item in _list:
for key, value in dict_item.items():
if key in _dict:
val = [a + b for a, b in zip(_dict[key], value)]
_dict[key] = val
else:
_dict[key] = value
print(_dict)
答案 1 :(得分:0)
这是 Pandas 的解决方案:
import pandas as pd
m=[{k:np.array(v) for k,v in i.items()} for i in _list]
df=pd.DataFrame(m)
df=df.fillna(0)
_dict = {i:list(sum(df[i])) for i in df.columns}
print(_dict)
输出:
{'a': [3, 40, 40, 80], 'b': [2, 28, 28, 56], 'c': [1, 20, 20, 40], 'd': [0, 14, 14, 28]}