Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Duyệt đệ quy (recursively iterate) nested Dictionary trong Python

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