Cho từ điển có ba lớp khóa, cách nhanh nhất để tổng hợp các giá trị là gì? Dưới đây là cách tiếp cận hiện tại của tôi:Python: Tổng giá trị của từ điển ba lớp
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)
đây sản lượng dự kiến là {'a': {'b': {'c': 5, 'e': 3}}}
Mục đích là để tổng hợp các giá trị mà hai cuốn từ điển có các phím tương tự (ví dụ như d[a][b][c]
đây) và bao gồm các cặp giá trị key còn lại từ một trong hai từ điển trong từ điển đầu ra.
Có một số câu hỏi về SO xuất hiện để trả lời câu hỏi: "Làm cách nào để tổng hợp giá trị của từ điển lồng nhau"? Tuy nhiên, đọc qua chúng tối qua, mọi thứ tôi tìm thấy liên quan đến một số trường hợp đặc biệt lạ hoặc tham số, như "kết hợp/bỏ qua lớp khóa thứ n" hoặc "áp dụng điều kiện nếu ở vị trí đặc biệt". Do đó, tôi muốn nêu ra câu hỏi đơn giản: Cách tốt nhất để tổng hợp các giá trị của từ điển lồng nhau đôi trong Python là gì?
bạn có thể có nhiều khóa ở lớp đầu tiên và thứ hai không? –
Ồ vâng. Kích thước khóa thực tế của tôi là khoảng 100.000; 1.000.000; và 100.000.000 cho các lớp một, hai và ba (tương ứng). – duhaime
và đầu ra dự kiến là một từ điển hai lớp sâu với các phím tương tự cho hai lớp làm từ điển ban đầu của bạn nhưng giá trị cuối cùng là tổng của các giá trị trong lớp thứ ba? –