首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取python中嵌套最深的dict的值。

获取python中嵌套最深的dict的值。
EN

Stack Overflow用户
提问于 2019-03-21 09:09:54
回答 2查看 1.3K关注 0票数 2

我有一本字典,像这样

代码语言:javascript
复制
{a:{b:{c:{d:2}}}, e:2, f:2}

我该如何获取d的值并在python中更改它呢?前面的问题只展示了如何获得嵌套的级别,而没有展示如何获得值。在这种情况下,我不知道字典的嵌套级别。任何帮助都将不胜感激,谢谢!附言:我使用的是python 3

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-21 09:20:49

那么一些递归呢?

代码语言:javascript
复制
def unest(data, key):
    if key in data.keys():
        return data.get(key)
    else:
        for dkey in data.keys():
            if isinstance(data.get(dkey), dict):
                return unest(data.get(dkey), key)
            else:
                continue

d = {'a':{'b':{'c':{'d':25}}}, 'e':2, 'f':2}

r = unest(d, 'd')
# 25

r = unest(d, 'c')
# {'d': 25}

编辑:正如Paul Rooney指出的那样,我们不必使用data.keys,我们可以通过执行if key in data来简单地迭代键

编辑2:给定您提供的输入,这将找到最深的级别,但是这不包括某些情况,例如,key e也是一个嵌套字典,它在n等于key a的深度的情况下执行n + 1级别。

代码语言:javascript
复制
def find_deepest(data):
    if not any([isinstance(data.get(k), dict) for k in data]):
        return data
    else:
        for dkey in data:
            if isinstance(data.get(dkey), dict):
                return find_deepest(data.get(dkey))
            else:
                continue

u = find_deepest(d)
# {'d': 2}
票数 4
EN

Stack Overflow用户

发布于 2021-05-01 00:35:35

我正在寻找类似的解决方案,但我希望在(可能)嵌套的字典中找到任何键的最深实例,并返回它的值。这假设您提前知道要搜索的关键字。我不清楚这是否是原始问题的有效假设,但我希望这能帮助其他人,如果他们偶然发现了这个帖子。

代码语言:javascript
复制
def find_deepest_item(obj, key, deepest_item = None):
if key in obj: 
    deepest_item = obj[key]
for k, v in obj.items():
    if isinstance(v,dict):
        item = find_deepest_item(v, key, deepest_item)
        if item is not None:
            deepest_item = item
return deepest_item

在这个例子中,'d‘键也存在于顶层:

代码语言:javascript
复制
d = {'a':{'b':{'c':{'d':25}}}, 'd':3, 'e':2, 'f':2}
v = find_deepest_item(d, 'd')
# 25

搜索“c”:

代码语言:javascript
复制
v = find_deepest_item(d, 'c')
# {'d': 25}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55272369

复制
相关文章

相似问题

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