[英]How do I add values (list) of a list of dictionaries if their key is same?
我有一個字典列表,
_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]
}
我不知道從哪里開始以及遵循什么方法,您能幫我獲得所需的輸出嗎? 謝謝
這是一個基本的解決方案,沒有最有效但有效:
_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)
這是 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]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.