如何统计嵌套字典键出现的次数?

Lan*_*n G -1 python dictionary

我有一个嵌套字典:

d = {'key': 1, 'lock':{'key': 3, 'lock': {'key': 7, 'lock': None}}}
Run Code Online (Sandbox Code Playgroud)

我希望简单地得到“key”出现的次数。所以在这个例子中,输出将是:

3
Run Code Online (Sandbox Code Playgroud)

因为“key”出现了3次。我知道这很简单,但我对如何用字典做到这一点有点模糊。如果可能的话,我宁愿不使用任何库。

谢谢您的帮助!

blh*_*ing 5

您可以使用递归计算给定键的函数:

def count(d, k):
    c = int(k in d)
    for v in d.values():
        if isinstance(v, dict):
            c += count(v, k)
    return c
Run Code Online (Sandbox Code Playgroud)

或者用更简洁的方式写上面的内容:

def count(d, k):
    return (k in d) + sum(count(v, k) for v in d.values() if isinstance(v, dict))
Run Code Online (Sandbox Code Playgroud)

这样count(d, 'key')返回:3