python - 如何在 Python 中实现树?

我正在尝试构建一棵通用树。

Python中有没有内置的数据结构来实现它?

最佳答案

我推荐anytree (我是作者)。

例子:

from anytree import Node, RenderTree

udo = Node("Udo")
marc = Node("Marc", parent=udo)
lian = Node("Lian", parent=marc)
dan = Node("Dan", parent=udo)
jet = Node("Jet", parent=dan)
jan = Node("Jan", parent=dan)
joe = Node("Joe", parent=dan)

print(udo)
Node('/Udo')
print(joe)
Node('/Udo/Dan/Joe')

for pre, fill, node in RenderTree(udo):
    print("%s%s" % (pre, node.name))
Udo
├── Marc
│   └── Lian
└── Dan
    ├── Jet
    ├── Jan
    └── Joe

print(dan.children)
(Node('/Udo/Dan/Jet'), Node('/Udo/Dan/Jan'), Node('/Udo/Dan/Joe'))

anytree还有一个强大的 API:

  • 简单的树创建
  • 简单的树修改
  • 预排序树迭代
  • 后序树迭代
  • 解析相对和绝对节点路径
  • 从一个节点走到另一个节点。
  • 树渲染(见上例)
  • 节点附加/分离连接

https://stackoverflow.com/questions/2358045/

相关文章:

linux - 将 awk 与列值条件一起使用

linux - 如何在 Linux shell 脚本中插入新行?

windows - 为什么在 Windows 上创建新进程比在 Linux 上更昂贵?

linux - 用于计算已用时间的 Bash 脚本

python - 将列表列表获取到 pandas DataFrame

python - 拆分(分解) Pandas 数据框字符串条目以分隔行

linux - 如何找到我使用的 Fedora 版本?

linux - 如何将当前正在运行的 linux 进程置于后台?

python - 重命名 virtualenv 文件夹而不破坏它

python - _tkinter.TclError : no display name and n