给定一个三层嵌套的字典,最快的求和方法是什么?这是我的当前方案:
from collections import defaultdict
dicts = [ {'a':{'b':{'c':1}}}, {'a':{'b':{'c':4, 'e':3}}} ]
def sum_three_deep_dict_values(dicts):
'''Read in two dicts and return a dictionary that contains their outer-joined keys and value sums'''
combined = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
for d in dicts:
for w1, val_dict in d.iteritems():
for w2 in val_dict.iterkeys():
for w3 in val_dict[w2].iterkeys():
combined[w1][w2][w3] += d[w1][w2][w3]
return combined
print sum_three_deep_dict_values(dicts)
这里期望的输出是
{'a': {'b': {'c': 5, 'e': 3}}}
。目标是将两个字典具有相同键的值相加(例如这里的d[a][b][c]
),并在输出字典中包含另一个字典中的其余键值对。在SO上有许多关于如何对嵌套字典的值求和的问题,但是昨晚我阅读它们时,每一个都涉及一些奇怪的特殊情况或参数,比如“组合/忽略第n层键”,或者“在特殊位置应用if条件”。因此,我想提出一个简单的问题:Python中对双重嵌套字典的值求和的最佳方法是什么?
{'a': {'b': {'c': 5, 'e': 3}}}
吗? - Matt