You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python程序中将图形以树形结构展示?求对应实现函数

实现树形结构展示的Python方案

1. 使用 treelib 库(文本树形快速实现)

这是专门处理树形结构的轻量库,能直接生成和你示例图逻辑一致的层级树形文本:

  • 安装命令:pip install treelib
  • 示例代码:
from treelib import Tree

# 初始化树并构建节点
tree = Tree()
tree.create_node("Root", "root")  # 根节点
tree.create_node("Child 1", "c1", parent="root")
tree.create_node("Child 2", "c2", parent="root")
tree.create_node("Grandchild 1", "gc1", parent="c1")
tree.create_node("Grandchild 2", "gc2", parent="c1")
tree.create_node("Grandchild 3", "gc3", parent="c2")

# 输出树形结构
tree.show()

运行后会输出层级清晰的树形文本,和示例图的展示效果匹配。

2. 使用 anytree 库(高自定义性)

这个库支持自定义节点属性,也能输出可定制样式的树形结构:

  • 安装命令:pip install anytree
  • 示例代码:
from anytree import Node, RenderTree

# 构建节点关系
root = Node("Root")
child1 = Node("Child 1", parent=root)
child2 = Node("Child 2", parent=root)
gc1 = Node("Grandchild 1", parent=child1)
gc2 = Node("Grandchild 2", parent=child1)
gc3 = Node("Grandchild 3", parent=child2)

# 渲染并打印树形
for pre, fill, node in RenderTree(root):
    print(f"{pre}{node.name}")

你还可以修改渲染符号,完全对齐示例图的样式。

3. 手动递归实现(无依赖)

如果不想安装第三方库,用简单的递归函数就能实现自定义树形:

def print_tree(node, indent="", is_last=True):
    # 打印当前节点
    prefix = "└── " if is_last else "├── "
    print(f"{indent}{prefix}{node['name']}")
    # 递归处理子节点
    indent += "    " if is_last else "│   "
    children = node.get("children", [])
    for idx, child in enumerate(children):
        print_tree(child, indent, idx == len(children)-1)

# 测试用树形数据
tree_data = {
    "name": "Root",
    "children": [
        {"name": "Child 1", "children": [{"name": "Grandchild 1"}, {"name": "Grandchild 2"}]},
        {"name": "Child 2", "children": [{"name": "Grandchild 3"}]}
    ]
}

print_tree(tree_data)

这种方式可以完全自定义分支符号,和示例图的样式完全匹配。


内容的提问来源于stack exchange,提问作者Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:16:09