Я построил дерево с использованием библиотеки 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