Python数据结构表示具有属性的无限树并循环直到最后深度

时间:2018-05-24 09:49:18

标签: python python-3.x

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

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

我需要

  1. 在python数据结构中表示此类别。我有关于列表中的列表,但我认为它对我没有帮助,因为我需要知道类别(A,A1,A2)的深度关系和名称
  2. l = [A - > [A1] - > [A12] - > [A121,A122]]

    1. 循环通过所有类别列表转到最后一个深度并随机选择一个类别
    2. 例如:

      • 第一个元素A,转到最后一个深度并随机选择A121和A122
      • 第三个元素C,在C1,C2之间随机选择

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

      导入

1 个答案:

答案 0 :(得分:1)

您可以使用名为anytree form https://pypi.org/project/anytree/

的第三方Python包
pip install anytree

code.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
>>>