[英]Find sum of all values in dict of dict
我有如下字典
{
'AAA':
{'NKA': 2, 'total': 4, 'Cleared': 2, 'NRM-TY': 3, 'KLAOO': 1, 'COREI': 1, 'MFTT': 2},
'DDD':
{'Cleared': 2, 'total': 1, 'KLAOO': 1, 'COREI': 1, 'NRM-TY': 1},
'NNN':
{'Cleared': 1, 'total': 1, 'KLAOO': 4,},
'AANN':
{'Cleared': 1, 'total': 1, 'NRM-TY': 2}
}
我需要獲得所有鍵值的總和,如下所示,
{'NKA': 2, 'total': 7, 'Cleared': 6, 'NRM-TY': 6, 'KLAOO': 6, 'COREI': 2, 'MFTT': 2}
我可以使用以下代碼實現這一目標,
result = {}
for k,v in a.items():
for p,q in v.items():
if p in result:
result[p] += q
else:
result[p] = q
我只是想知道有沒有簡單的方法可以做到這一點...
使用collections.Counter
例如:
from collections import Counter
data = {
'AAA':
{'NKA': 2, 'total': 4, 'Cleared': 2, 'NRM-TY': 3, 'KLAOO': 1, 'COREI': 1, 'MFTT': 2},
'DDD':
{'Cleared': 2, 'total': 1, 'KLAOO': 1, 'COREI': 1, 'NRM-TY': 1},
'NNN':
{'Cleared': 1, 'total': 1, 'KLAOO': 4,},
'AANN':
{'Cleared': 1, 'total': 1, 'NRM-TY': 2}
}
result = Counter()
for _, v in data.items():
result += Counter(v)
print(result)
輸出:
Counter({'total': 7, 'NRM-TY': 6, 'Cleared': 6, 'KLAOO': 6, 'NKA': 2, 'COREI': 2, 'MFTT': 2})
您也可以考慮使用pandas庫:
import pandas as pd
pd.DataFrame(your_dict).sum(axis=1)
你得到:
COREI 2.0
Cleared 6.0
KLAOO 6.0
MFTT 2.0
NKA 2.0
NRM-TY 6.0
total 7.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.