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

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

本文介绍如何在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 相关产品和应用

全部下载

专题列表