gpt4 book ai didi

python:找到所有具有值的键

转载 作者:太空狗 更新时间:2023-10-30 01:50:03 26 4
gpt4 key购买 nike

我有一个字典如下:

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']

关于python:找到所有具有值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48276165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com