Man*_*Ben 8 python recursion dictionary
天儿真好,
我试图找到一个拖曳字典的函数的递归深度,我有点迷失...目前我有类似的东西:
myDict = {'leve1_key1': {'level2_key1': {'level3_key1': {'level4_key_1': {'level5_key1': 'level5_value1'}}}}}
Run Code Online (Sandbox Code Playgroud)
我想知道最嵌套的字典是如何嵌套的......所以我做了以下......
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)
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,递归循环只返回最终值(0)的返回值.如果我输入一个print语句,
for i in d.keys():那么我至少可以打印最高递归值,但返回值是另一回事......
我确信这很简单 - 我刚买了果冻.
干杯
Ray*_*ger 10
请务必将递归调用的结果分配给depth.另外,正如@amit所说,考虑使用max,以便您可以处理具有多个键值对(树状结构)的dicts.
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
Run Code Online (Sandbox Code Playgroud)