例如:
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}}
我们如何以优化的方式找到我们在那里有最多3层(字典内的字典)的字典。
答案 0 :(得分:4)
为字典计数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))
我得到3
答案 1 :(得分:1)
您可以使用递归函数来查找嵌套字典的最大深度:
def depth(d):
if (not isinstance(d, dict) or not d):
return 0
else:
return max(depth(v) for k, v in d.iteritems()) + 1
这给出了预期的输出:
depth(d) # 3
感谢@tobias_k建议采用简化方法。
请注意,上面的函数为空字典提供了0深度(这就是我检查if d
)的原因。这对我来说过去很有用,但我认为这是一种惯例。