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次。我知道这很简单,但我对如何用字典做到这一点有点模糊。如果可能的话,我宁愿不使用任何库。
谢谢您的帮助!
您可以使用递归计算给定键的函数:
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