蟒蛇:找到一个值的所有键

过度

我有如下字典:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Google表格-添加所有值,直到找到最后一个键

给定一个主键,是否可以在 EF Core 模型中找到所有外键?

试图将与键匹配的所有值拉到一个键中

循环遍历字典键中的最后一个值而不是字典中的所有值

在列表中找到所有后续值加一的第一个元素

JS如何返回一个对象,一键分享所有的值

如何找到一个句子甚至有相反的蟒蛇那些单词

如何继承所有类属性,但只有一个?蟒蛇

熊猫分组依据,并找到所有列的第一个非空值

验证另一个地图中是否存在一个地图中的所有键/值对

如何在PHP数组中获取键搜索的所有值与另一个键的值?

计算对象中 X 是第一个键字母的所有值

PostgreSQL:在 jsonb 中选择一个键的所有值

球拍:我正在尝试构建一个函数,以返回与键关联的所有值

Javascript-将Map对象的所有键设置为一个值

如何从Laravel多维数组获取一个键的所有值

将一个键添加到列表中的所有值

如何求和属于同一个键的所有值?

scala 将一个键的所有映射值添加到队列中

Laravel集合删除所有键,如果其中任何一个的值为NULL

有什么方法可以操作(添加、删除)某些键并将所有值分组到一个键下?

删除除一个以外的所有键,但将所有值保留在python字典中

搜索列中2个值之间的所有值并循环直到找到最后一个

csv.writer正在为一个键而不是所有其他键写入值

基于数组中的一个键值如何找到另一个键的值?

创建一个函数来接受一个二维数组并返回一个显示所有键:值的对象

MATLAB:在一个日期中找到所有值,然后过滤到一个小时并找到平均值

如何找到一个单词的所有字谜?

如何找到一个类型的所有资产?