首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用python从dict中查找父密钥给出一个中间密钥

使用python从dict中查找父密钥给出一个中间密钥
EN

Stack Overflow用户
提问于 2015-07-24 20:21:16
回答 1查看 3.5K关注 0票数 0

我有一本像这样的字典:

代码语言:javascript
运行
复制
d = {'dev':
        {<dev1>:
             {'mod':
                 {<mod1>:
                     {'port': [1, 2, 3]
                            }
                  }
              }
         <dev2>:
             {'mod':
                 {<mod3>:
                       {'port': [] }
                 }
             }
       }
  }

我希望能够编写一个函数,这样如果我提供‘mod1 1’这样的搜索对象,它就会为我提供父键'dev1‘。

我搜遍了所有的东西,尝试了很多东西,但似乎不能让它起作用。任何帮助都将不胜感激!

我试过以下链接中提到的内容:

Python--Finding Parent Keys for a specific value in a nested dictionary

Find a key in a python dictionary and return its parents

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-24 20:36:08

这应该是可行的:

代码语言:javascript
运行
复制
def find_parent_keys(d, target_key, parent_key=None):
  for k, v in d.items():
    if k == target_key:
      yield parent_key
    if isinstance(v, dict):
      for res in find_parent_keys(v, target_key, k):
        yield res

用法:

代码语言:javascript
运行
复制
d = {
  'dev': {
    'dev1': {
      'mod': {
        'mod1': {'port': [1, 2, 3]},
      },
    },
    'dev2': {
      'mod': {
        'mod3': {'port': []},
      },
    },
  },
}

print list(find_parent_keys(d, 'mod'))
print list(find_parent_keys(d, 'dev'))

输出:

代码语言:javascript
运行
复制
['dev2', 'dev1']
[None]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31619128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档