Duyệt tất cả cặp key-value ở mọi cấp độ của nested dict bằng hàm đệ quy.
Ví dụ dữ liệu
D1 = {
1: {2: {3: 4, 5: 6}, 3: {4: 5, 6: 7}},
2: {3: {4: 5}, 4: {6: 7}}
}
Hàm đệ quy
def iterdict(d):
for k, v in d.items():
if isinstance(v, dict):
iterdict(v) # đệ quy vào dict con
else:
print(k, ":", v) # leaf value
iterdict(D1)
Kết quả
3 : 4 5 : 6 4 : 5 6 : 7 4 : 5 6 : 7
Thu thập kết quả thay vì print
def collect_leaves(d, result=None):
if result is None:
result = []
for k, v in d.items():
if isinstance(v, dict):
collect_leaves(v, result)
else:
result.append((k, v))
return result