从子类列表构造一个python富树



我正在尝试从后代d列表中构建pythonrich.Tree

d = {0: [1, 2], 2: [3, 4, 5], 4: [6, 7]}

我期望得到这样的东西:

# manually constructed string
expected = 
"""
0
├── 1
└── 2
└── 3
└── 4
└── 6
└── 7
└── 5
"""

但我对如何进行结构感到困惑:以下代码不正确。

from rich.tree import Tree
from rich import print as rprint
tree = Tree("0")
tree.add("1")
tree.add("2").add("3")
tree.add("4").add("6").add("7")
tree.add("5")
rprint(tree)
0
├── 1
├── 2
│   └── 3
├── 4
│   └── 6
│       └── 7
└── 5

任何建议都将受到赞赏,谢谢!

下面应该可以工作:

from rich.tree import Tree
from rich import print as rprint
tree = Tree("0")
tree.add("1")
tree.add("2").add("3")
four_branch = tree.add("4")
four_branch.add("6")
four_branch.add("7")
tree.add("5")
rprint(tree)

如果你看一下他们在文档中链接的例子,你会看到tree.add(...)返回一个值,然后你可以将其添加到

您可以使用递归函数将树的字典表示(即邻接表)转换为嵌套的树对象:

def make_tree(adj, node=0):
tree = Tree(str(node))
for child in adj.get(node, []):
tree.add(make_tree(adj, child))
return tree

像这样调用:

d = {0: [1, 2], 2: [3, 4, 5], 4: [6, 7]}
tree = make_tree(d)
rprint(tree)

相关内容

最新更新