我有一張單子:
[
{"node": "root", "children": ["a"]},
{"node": "a", "children": ["b", "b"]},
{"node": "b", "children": ["c", "c", "c"]},
{"node": "c", "children": ["d"]},
]
表示壓縮樹的。我的意思是這個dict列表代表了下面的樹:
我可以把這個dict列表轉換成什么樣的數據結構,這樣我就可以把它擴展成一棵樹?我在想把這張單子翻成這樣:
{"root": [
{"a": [
{"b": [
{"c": [
{"d": "None"}
]
},
{"c": [
{"d": "None"}
]
},
{"c": [
{"d": "None"}
]
}
]
},
{"b": [
{"c": [
{"d": "None"}
]
},
{"c": [
{"d": "None"}
]
},
{"c": [
{"d": "None"}
]
}
]
}
]
}
]
}
看起來很混亂,但本質上是一個嵌套的節點到子列表的dict。不太清楚如何做到這一點。任何其他想法來解壓縮這棵樹是歡迎的!
理想的情況是,我可以把它放到一些樹庫中,比如treelib
,以獲得列出葉節點、訪問父母、祖父母等數據的方法。
首先,我將轉換為:
變成更可行的格式:
很簡單:
在您的示例中:
也就是說,我建議不要用字符串
"None"
替換空的子列表,而只是讓它成為一個空列表(因此只需刪除上面的or "None"
)。