首页 > 解决方案 > 计算字典中键(和子键)数量的最佳方法

问题描述

我有一个 python dict(从 json 文件中读取),如下所示:

{ 'a' : 
    { 'b' : 
        { 'c': 3, 
          'd': 4} 
    } 
} 

识别密钥总数(包括子密钥)的最佳方法是什么?在上面的例子中,期望的答案是 4 ( 'a','b','c','d')。有没有办法做到这一点,而不仅仅是创建一个for循环并迭代?

标签: pythonjsondictionary

解决方案


您可以使用递归:

def key_num(d):
   return sum(not isinstance(b, dict) or 1 + key_num(b) for b in d.values())

data = {'a': {'b': {'c': 3, 'd': 4}}}
print(key_num(data))

输出:

4

推荐阅读