G’day,
我试图找到拖网字典的函数的递归深度,但我有点迷路了……目前,我有类似以下内容:
myDict = {'leve1_key1': {'level2_key1': {'level3_key1': {'level4_key_1': {'level5_key1': 'level5_value1'}}}}}
我想知道嵌套最多的字典是如何嵌套的…所以我要做以下…
def dict_depth(d, depth):
for i in d.keys():
if type(d[i]) is dict:
newDict = d[i]
dict_depth(newDict, depth+1)
return depth
print dict_depth(myDict, 0)
唯一的问题是,递归循环仅返回最终值(0)的返回值。如果我输入一条打印语句, for i in d.keys():
那么我至少可以打印出最高的递归值,但是返回值是另一回事…
我敢肯定,这很简单-我刚买了果冻脑。
干杯
确保将递归调用的结果分配给 depth 。此外,正如@amit所说,请考虑使用 max, 以便您可以使用多个键值对(树状结构)处理字典。
def dict_depth(d, depth=0):
if not isinstance(d, dict) or not d:
return depth
return max(dict_depth(v, depth+1) for k, v in d.iteritems())
>>> myDict = {'leve1_key1': {'level2_key1':
{'level3_key1': {'level4_key_1':
{'level5_key1': 'level5_value1'}}}}}
>>> dict_depth(myDict)
5
问题内容: 因此,我有一个python字典,将其称为,然后在稍后的某个时间将该字典的版本称为。我想找到和之间的所有更改。换句话说,添加,删除或更改的所有内容。棘手的是,值可以是整数,字符串,列表或字典,因此需要递归。这是我到目前为止所拥有的: 除非该值是一个列表,否则它将正常工作。我无法提出一种优雅的方式来处理列表,而又没有在此函数之后重复重复使用该函数的巨大变化。 有什么想法吗? 编辑:这与这篇
问题内容: 我正在尝试将数据从简单的对象图转换为字典。我不需要类型信息或方法,也不需要能够再次将其转换回对象。 我发现了有关从对象的字段创建字典的问题,但它不是递归执行的。 对于python来说相对较新,我担心我的解决方案可能很丑陋,或者是非Python的,或者以某种晦涩的方式破坏了,或者仅仅是普通的NIH。 我的第一次尝试似乎一直有效,直到我使用列表和字典对其进行尝试为止,并且似乎更容易的是仅检
问题内容: 我使用以下代码解决了Euler项目的问题10,该代码通过强力工作: 这三个功能的工作方式如下: isPrime 检查数字是否为质数; primeList 返回一个列表,其中包含一组在一定范围内且限制为“ n”的素数,并且; sumPrimes 对列表中所有数字的值求和。(不需要最后一个功能,但是我喜欢它的清晰度,特别是对于像我这样的初学者。) 然后,我编写了一个新函数 primeLis
我对Python很陌生。我写了一个关于返回 x 在排序的重复元素数组 A 中的出现次数的函数: 错误是:运行时错误:超出最大递归深度。有人知道如何解决它吗?
问题内容: 我有以下字典: 我想将一个条目附加到key1-> key2-> key3上,其值为’blah’,产生: 我正在寻找一种与键的数量无关的通用解决方案,即即使不存在从key3向下的键,key1-> key2-> key3-> key4-> key5也应该起作用。这样我得到: 提前致谢。 问题答案: 您可以使用该函数遍历一系列嵌套字典: 演示: 当密钥不存在时,此版本引发异常: 但您可以替换
本文向大家介绍关于python之字典的嵌套,递归调用方法,包括了关于python之字典的嵌套,递归调用方法的使用技巧和注意事项,需要的朋友参考一下 一 字典的嵌套 在机器学习实战决策树部分,生成决策树时用到了字典的嵌套。 在上面构造嵌套字典的过程中,可以通过key来得到相应的value,而相应的value又可以是由字典构成的,再次利用key作为索引层级得到value。 二 递归调用 递归函数算阶乘