我有一个字典对象:
menu = {'dinner':{'chicken':'good','beef':'average','vegetarian':{'tofu':'good','salad':{'caeser':'bad','italian':'average'}},'pork':'bad'}}
我正在尝试使用pydot和'menu'数据this创建一个图(决策树)。
“Dinner”是最上面的节点,它的值(鸡肉、牛肉等)在下面。对于链接,graph函数接受两个参数:源和节点。
它看起来像this:
除了“国王”是“晚餐”,“领主”是“鸡肉”,“牛肉”等
我的问题是:如何访问值中的密钥?为了从这些数据中创建一个树,我觉得我需要创建一个循环来检查是否有一个特定键的值并绘制它。我不知道如何为任何dictionary对象调用值(如果它不一定被称为“dinner”或有那么多元素的话)。
关于如何绘制图表有什么建议吗?
使用递归函数
您可能需要考虑使用一个递归的函数(就像下面我的代码中的
visit
),这样您就可以处理一个通用的嵌套字典。在这个函数中,您需要传递一个parent
参数来跟踪谁是您的传入节点。还要注意,您使用isinstance
来检查键的字典值是否是它自己的字典,在这种情况下,您需要递归地调用visit
。结果树结构
我不太清楚您的问题,但在Python中访问字典键值的方法很简单:
这将返回给你钥匙的价值。如果该键不在字典中,它将返回一个
KeyError
,因此如果您正在使用字典,并且不确定您请求的键是否在字典中,则有两个选项。If语句(首选):
尝试捕获:
如果您不知道字典中的键,需要获取它们,只需调用
dictionary.keys()
,它就会返回字典中所有键的列表。获取字典键的值将返回一个甚至可能是另一个对象的对象。例如,为了找出
"tofu"
的值,我们将执行以下操作:相关问题 更多 >
编程相关推荐