在字典樹的所有葉到根的路徑我有一個字典樹中的「非標準」的形式,如下所示:生成在Python
tree = {'0': {'A': {'B': {'C': {}}}},
{'D': {'E': {}},
{'F': {}}}}
葉節點被定義爲字典鍵值對的值是一個空的字典。 我想提取所有葉到根路徑,列表的列表,像這樣:
paths_ = [['C', 'B', 'A', '0'],
['E', 'D', '0'],
['F', 'D', '0']]
的路徑可以顛倒過,如果這是有幫助的。
paths_ = [['0', 'A', 'B', 'C'],
['0', 'D', 'E'],
['0', 'D', 'F']]
我知道我必須做遞歸,我需要每個路徑的累加器列表。如果函數產生了路徑列表,它也會很好。我到目前爲止是這樣的:
def paths(node, subtree, acc=[]):
if not subtree:
yield [node]+acc
for n, s in subtree.items():
yield paths(n, s, acc)
它並沒有真正做我想做什麼:
paths_ = list(paths('0', tree['0']))
理想這應該返回列表的名單。任何幫助都感激不盡。
可否請你解決'tree'?這是不正確的。 – 2012-07-19 22:59:39