給定一個包含三層鍵的詞典,總結這些值的最快方法是什麼?這是我目前的做法:Python:總結三層詞典的價值
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中彙總雙嵌套字典的值的最佳方法是什麼?
你可以在第一層和第二層有多個鍵嗎? –
哦,是的。我的實際密鑰大小約爲100,000; 1,000,000;第一層,第二層和第三層分別爲100,000,000。 – duhaime
並且期望的輸出是一個兩層深的字典,其中兩層的鍵與原始字典的鍵相同,但最後一個值是第三層中的值的總和? –