代码之家  ›  专栏  ›  技术社区  ›  user3541631

python数据结构,用于表示具有属性和循环的无限树,直到最后一个深度

  •  0
  • user3541631  · 技术社区  · 6 年前

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

    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. 循环浏览所有类别列表到最后一个深度,然后随机选择其中一个类别

    例如:

    • 第一个元素A,转到最后一个深度,随机OM在A121和A122之间选择
    • 第三个元素c,在c1、c2之间随机选择

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Surya Tej    6 年前

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