python:查找所有具有值的键

2024-01-22

我有一本如下字典:

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']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python:查找所有具有值的键 的相关文章

随机推荐