我有如下字典:
mydict = {'a' : 'apple',
'b' : 'bobb',
'c' : {
'd' : 'dog'
},
'e' : 'dog'
}
假设我要查找所有带有值' dog
'的键,如果嵌套,则键之间应用点分隔。
所以输出应该是一个列表 ['e', 'c.d']
现在,如果我在python 3中编写下面的代码,它只会输出' e
'。
print(list(mydict.keys())[list(mydict.values()).index('dog')])
如何获得嵌套键?
您可以使用如下的递归函数:
def find_key(mydict, pre=tuple()):
for key, value in mydict.items():
if isinstance(value, dict):
yield from find_key(value, pre=pre+(key,))
elif value == 'dog':
if pre:
yield '.'.join(pre + (key,))
else:
yield key
测试:
In [23]: list(find_key(mydict))
Out[23]: ['e', 'c.d']
In [26]: mydict = {'a' : 'apple',
'b' : 'bobb',
'c' : {
'd' : 'dog'
},
'e' : 'dog',
'k':{'f':{'c':{'x':'dog'}}}}
In [27]:
In [27]: list(find_key(mydict))
Out[27]: ['k.f.c.x', 'e', 'c.d']
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句