Python字典构建无限级树结构:高效数据组织方法
在实际应用中,将扁平数据转化为树形结构能够提升数据可读性和处理效率。本文将详细阐述如何利用Python代码,将包含父节点ID的字典列表转换为无限级树形结构,并用children字段表示子节点。
示例数据:
rows = [ {'pid': 0, 'id': 1, 'name': 'aaa'}, {'pid': 0, 'id': 2, 'name': 'bbb'}, {'pid': 0, 'id': 3, 'name': 'ccc'}, {'pid': 1, 'id': 4, 'name': 'ddd'}, {'pid': 4, 'id': 5, 'name': 'eee'}, {'pid': 5, 'id': 6, 'name': 'fff'}, ]
通过递归函数实现数据转换:
立即学习“Python免费学习笔记(深入)”;
def build_tree(data, parent_id=None): tree = [] for item in data: if item['pid'] == parent_id: node = {'id': item['id'], 'name': item['name']} children = build_tree(data, item['id']) if children: node['children'] = children tree.append(node) return tree
build_tree函数接收原始数据列表data和父节点ID parent_id (默认为None, 表示根节点) 作为参数。函数遍历data,查找pid与parent_id匹配的节点,创建包含id和name信息的节点字典。然后递归调用build_tree函数构建子节点,并将子节点添加到children字段。最后,将节点添加到树列表并返回。
另一个示例:
data = [ {'id': 1, 'name': 'A', 'parent_id': None}, {'id': 2, 'name': 'B', 'parent_id': 1}, {'id': 3, 'name': 'C', 'parent_id': 1}, {'id': 4, 'name': 'D', 'parent_id': 2}, {'id': 5, 'name': 'E', 'parent_id': 3}, {'id': 6, 'name': 'F', 'parent_id': 3}, {'id': 7, 'name': 'G', 'parent_id': 4}, {'id': 8, 'name': 'H', 'parent_id': 5}, ] tree = build_tree(data) print(tree)
这段代码将输出构建好的树形结构。 请注意,此代码未包含循环检测机制,处理存在循环引用的数据时可能会导致无限递归。实际应用中,需添加循环检测和处理来避免此问题。
以上就是Python字典如何构建无限级树结构?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号