首页 > 解决方案 > Python数据结构表示具有属性的无限树并循环直到最后一个深度

问题描述

我有一组多个级别/深度的类别:

1. A
   - A1
     - A11
     - A12
       - A121 
       - A122
     -A2
2. B
3. C
   - C1
   - C2

我需要

  1. 在 python 数据结构中表示这些类别。我有关于列表中的列表,但我认为它对我没有帮助,因为我需要知道类别的深度关系和名称(A,A1,A2)

l= [ A -> [A1] -> [A12] -> [A121, A122]]

  1. 遍历所有类别列表到最后一个深度并随机选择一个类别

例如:

首先,为了测试,我将手动创建结构,但我想稍后从 CSV 导入

标签: pythonpython-3.x

解决方案


您可以使用第三方 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
>>> 

推荐阅读