我有如下字典,
{
'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
我只是想知道有没有简单的方法可以做同样的事情...
答案 0 :(得分:3)
使用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})
答案 1 :(得分:1)
您还可以考虑使用熊猫库:
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
答案 2 :(得分:0)
使用foreach (object o in question.Options)
{
foreach (object ob in o)
{
Console.WriteLine(ob.ToString());
}
}
的另一种方法:
defaultdict