Чтобы вставить свойства с именем узла и идентификатором в дерево -anytree - PullRequest
0 голосов
/ 31 января 2020

Я построил дерево с использованием библиотеки Anytree в Python, где он строит узел вместе с его идентификатором.

from anytree import Node, RenderTree,PreOrderIter
def list_anytree(lst):
    rootname = lst[0][0]
    node = Node(rootname)
    for j in lst:
        parentnode = node
        assert j[0] == parentnode.name
        for currentnodename in j[1:]:
            currentnode = next(
                (node for node in parentnode.children if node.name == currentnodename),
                None,
            )
            if currentnode is None:
                currentnode = Node((currentnodename), parent=parentnode)
            parentnode = currentnode
    return node

lst=[['Auto Ontology', 'hdfc bank', 'giftplus card'], ['Auto Ontology', 'hdfc bank', 'giftplus card']]

anytree=list_anytree(lst)
for idx, node in enumerate(PreOrderIter(anytree)):
    node.idx = idx   
for pre,fill,node in RenderTree(anytree):
    print(f"{pre}{node.idx} {node.name}")

Вывод дерева:

0 Auto Ontology
└── 1 hdfc bank
    └── 2 giftplus card

Теперь мой lst изменяется как

lst=[['Auto Ontology', 'hdfc bank', '!!giftplus card'], ['Auto Ontology', 'hdfc bank', '**giftplus card']]
# !!giftplus card means optional , **giftplus card means its mandatory

Я хочу, чтобы мой вывод был как ниже или похож на ниже

0 Auto Ontology
└── 1 hdfc bank
    ├── 2 giftplus card property=optional
    └── 3 giftplus card property=mandatory
...