python - Python数据结构表示具有属性的无限树并循环直到最后一个深度
问题描述
我有一组多个级别/深度的类别:
1. A
- A1
- A11
- A12
- A121
- A122
-A2
2. B
3. C
- C1
- C2
我需要
- 在 python 数据结构中表示这些类别。我有关于列表中的列表,但我认为它对我没有帮助,因为我需要知道类别的深度关系和名称(A,A1,A2)
l= [ A -> [A1] -> [A12] -> [A121, A122]]
- 遍历所有类别列表到最后一个深度并随机选择一个类别
例如:
- 第一个元素A,到最后一个深度并在A121和A122之间随机选择
- 第三个元素C,在C1、C2之间随机选择
首先,为了测试,我将手动创建结构,但我想稍后从 CSV 导入
解决方案
您可以使用第三方 Python 包,称为 anytree 形式https://pypi.org/project/anytree/
pip install anytree
代码.py
from anytree import Node, RenderTree
A = Node("A")
A1 = Node ("A1", parent=A)
A11 = Node("A11", parent = A1)
A12 = Node("A12", parent = A1)
A121 = Node("A121", parent = A12)
A122 = Node("A122", parent = A12)
A2 = Node("A2", parent=A1)
B = Node("B")
C = Node("C")
C1 = Node("C1", parent=C)
C2 = Node("C2", parent=C)
print (A)
print(A122)
for pre, fill, node in RenderTree(A):
print("%s%s" % (pre, node.name))
输出
============= RESTART: C:/Python36/MyTestScripts/anytree_test.py =============
Node('/A')
Node('/A/A1/A12/A122')
A
└── A1
├── A11
├── A12
│ ├── A121
│ └── A122
└── A2
>>>
推荐阅读
- android - JSONObject Azure 函数
- reactjs - 如何将 React 代码转换为 ClojureScript 代码?
- python - 不能声明双数组?
- javascript - 如何将请求 ID 值传递给模态?
- angular - Angular 7 Service 是未定义的异常
- excel - 修改通过 VBA IDE 创建的子和函数体的任何可能性
- swift - 结构作为具有完成功能的函数中的参数 - Swift
- elasticsearch - Elasticsearch 什么是网站搜索的最佳查询
- zeromq - 用于发布/订阅的 ZMQ C++ 主题
- verification - OIDC 签名验证