Есть класс, в котором я храню иерархичные данные
class Node:
def __init__(self, name: str, parent: 'Node' = None):
self.name = name
self.parent = parent
self.children = []
def add_child(self, obj: 'Node'):
self.children.append(obj)
input = [
(None, 'a'),
(None, 'b'),
(None, 'c'),
('a', 'a1'),
('a', 'a2'),
('a2', 'a21'),
('a2', 'a22'),
('b', 'b1'),
('b1', 'b11'),
('b11', 'b111'),
('b', 'b2'),
('c', 'c1'),
]
Все эти данные я заливаю в словарь.
name_by_node = dict()
name_by_node[None] = Node('ROOT', None)
for parent, child in input:
parent_node = name_by_node[parent]
if child not in name_by_node:
name_by_node[child] = Node(child, parent_node)
result[child] = parent_node.name
parent_node.add_child(name_by_node[child])
Как рекурсивно вывести данные в виде dict? Чтобы получилось вот так
result = {
'a': {'a1': {}, 'a2': {'a21': {}, 'a22': {}}},
'b': {'b1': {'b11': {'b111': {}}}, 'b2': {}},
'c': {'c1': {}},
}