使用递归函数
您可能需要考虑使用 递归
函数(例如
visit下面的代码),以便能够处理常规的嵌套字典。在此函数中,您希望传递一个
parent参数来跟踪谁是您的传入节点。注意,您用于
isinstance检查键的字典值是否是其自己的字典,在这种情况下,您需要
visit递归调用。
import pydotmenu = {'dinner': {'chicken':'good', 'beef':'average', 'vegetarian':{ 'tofu':'good', 'salad':{ 'caeser':'bad', 'italian':'average'} }, 'pork':'bad'} }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.iteritems(): 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)graph.write_png('example1_graph.png')


