Я ищу лучший способ графически отобразить следующее дерево, которое было создано с использованием вложенных словарей в Python 3.7.
menu = {'A':
{'B':'Z',
'C':{ 'Z':'0',
'E':
{
'Z':'0',
'H':'X',
},
'F':{
'Z':'0',
'I':'X'
}
},
'D':
{
'Z':'0',
'G':{
'Z':'0',
'J':'X'
}
},
}
}
Я попытался использовать следующий код, описанный на странице Словарь объекта для дерева решений в Pydot , но он не работает.
import pydot
menu = {'A':
{'B':'Z',
'C':{ 'Z':'0',
'E':
{
'Z':'0',
'H':'X',
},
'F':{
'Z':'0',
'I':'X'
}
},
'D':
{
'Z':'0',
'G':{
'Z':'0',
'J':'X'
}
},
}
}
def draw(parent_name, child_name):
edge = pydot.Edge(parent_name, child_name)
graph.add_edge(edge)
def visit(node, parent=None):
for k,v in node.items():
if isinstance(v, dict):
# We start with the root node whose parent is None
# we don't want to graph the None node
if parent:
draw(parent, k)
visit(v, k)
else:
draw(parent, k)
# drawing the label using a distinct name
draw(k, k+'_'+v)
graph = pydot.Dot(graph_type='graph')
visit(menu)
print(graph)
graph.write_png('example1_graph.png')
Любая помощь будет принята с благодарностью. Спасибо!