如何找到Python中有多少级别的字典

dpd*_*dpd 4 python dictionary

例如:

d = {1:{'name':'x', 'age':24, 'address':{'country':'zzz', 'zip':12345}}, 2:{'name':'y', 'age':21, 'address':{'country':'yyy', 'zip':54321}}, 3:{'name':'z', 'age':25}}
Run Code Online (Sandbox Code Playgroud)

我们如何以优化的方式找到最多 3 层(字典内的字典)的字典。

Jea*_*bre 7

为字典计数 1,否则为 0,并取所有字典值的“最坏情况”:

my_dict = {1:{'name':'x', 'age':24, 'address':{'country':'zzz', 'zip':12345}}, 2:{'name':'y', 'age':21, 'address':{'country':'yyy', 'zip':54321}}, 3:{'name':'z', 'age':25}}

def count(d):
    return max(count(v) if isinstance(v,dict) else 0 for v in d.values()) + 1

print(count(my_dict))
Run Code Online (Sandbox Code Playgroud)

我得到 3

  • 请注意,它仅在有标量和字典值时才有效。引入嵌套字典的列表并且它们没有被考虑在内,它需要稍微复杂的代码(但仍然可行!) (2认同)