递归深度的python字典

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)