Python使用treelib库构建多叉树及提取节点数据详解

宋时安
宋时安
发布时间:2026-10-13| 6人浏览过
原创

本文介绍如何在Python中使用treelib库构建多叉树结构。通过定义节点类并创建根节点与子节点,实现树形结构的初始化。重点演示如何获取节点存储的自定义数据对象,并提取具体属性值,适用于需要层级数据处理的应用场景。

项目背景与库引入

项目背景涉及基于Pymysql的专家随机抽取系统开发。

该系统的核心需求之一是处理复杂的层级关系,因此需要引入相应的库函数来支持树形结构的操作。

首先,需要导入treelib库中的Tree和Node类,以便后续进行树的创建和节点管理。


>>> import treelib
>>> from treelib import Tree, Node

节点类与多叉树构建

为了存储更丰富的信息,需要构造一个自定义的节点类。该类用于封装节点的具体数据属性,例如编号或权重等关键信息。


>>> class Nodex(object): \
    def __init__(self, num): \
      self.num = num

接下来构建多叉树。在创建节点时,务必注意第二个参数作为节点ID,其类型必须为字符串(str),且在整个树结构中不能与其他节点ID重复,否则会导致节点构建失败。


>>> tree1 = Tree()
>>> tree1.create_node('Root', 'root', data = Nodex('3'));\
   tree1.create_node('Child1', 'child1', parent = 'root', data =Nodex('4'));\
   tree1.create_node('Child2', 'child2', parent = 'root', data =Nodex('5'));\
   tree1.create_node('Child3', 'child3', parent = 'root', data =Nodex('6'));\

树结构展示与数据提取

构建完成后,可以通过调用show方法查看树的打印结果。默认情况下,它显示节点的标签;若指定data_property参数,则显示节点数据中指定的属性值,从而直观地展示树的结构和数据分布。


>>> tree1.show()
Root
├── Child1
├── Child2
└── Child3

>>> tree1.show(data_property = 'num')
3
├── 4
├── 5
└── 6

打印节点信息时,可以发现节点实际上是以字典的形式存储在内部。这种存储方式便于通过节点ID快速访问对应的Node对象,包括其标签、标识符以及关联的数据对象。


>>> tree1.nodes
{'root': Node(tag=Root, identifier=root, data=<__main__.Nodex object at 0x000002265C6A9550>), 'child1': Node(tag=Child1, identifier=child1, data=<__main__.Nodex object at 0x000002265C6A9E10>)}

若要取出特定节点(如child1)存储的数据,可以通过访问nodes字典中对应ID的Node对象,进而获取其data属性。例如,获取child1节点数据中的num属性值,即可得到该节点关联的具体业务数据。


>>> tree1.nodes['child1'].data.num
'4'

以上即为Python中使用treelib库构造多叉树并提取节点数据的完整流程。希望本文提供的示例代码和说明能对读者有所帮助,欢迎参考并在实际项目中应用。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。