首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在字典中递归查找键

在字典中递归查找键
EN

Stack Overflow用户
提问于 2013-02-20 00:29:21
回答 7查看 72.5K关注 0票数 40

我正在尝试编写一个非常简单的函数来递归地搜索可能嵌套的(在最极端的情况下是十层深) Python字典,并返回它从给定键中找到的第一个值。

我不明白为什么我的代码不适用于嵌套字典。

代码语言:javascript
运行
复制
def _finditem(obj, key):
    if key in obj: return obj[key]
    for k, v in obj.items():
        if isinstance(v,dict):
            _finditem(v, key)

print _finditem({"B":{"A":2}},"A")

它返回None

但是,它确实适用于返回2_finditem({"B":1,"A":2},"A")

我确定这是一个简单的错误,但我找不到。我觉得在标准库或collections中可能已经有了这方面的东西,但我也找不到。

EN

Stack Overflow用户

发布于 2019-05-18 23:58:07

我不能对@mgilston提出的被接受的解决方案添加评论,因为缺乏声誉。如果要搜索的键在列表中,则解决方案不起作用。

循环遍历列表的元素并调用递归函数应该会扩展查找嵌套列表中的元素的功能:

代码语言:javascript
运行
复制
def _finditem(obj, key):
    if key in obj: return obj[key]
    for k, v in obj.items():
        if isinstance(v,dict):
            item = _finditem(v, key)
            if item is not None:
                return item
        elif isinstance(v,list):
            for list_item in v:
                item = _finditem(list_item, key)
                if item is not None:
                    return item

print(_finditem({"C": {"B": [{"A":2}]}}, "A"))
票数 0
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14962485

复制
相关文章

相似问题

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