我有像这样的字典

{a:{b:{c:{d:2}}}, e:2, f:2}


我应该如何获取d的值并在python中更改它?先前的问题仅显示了如何获取嵌套级别,但没有显示如何获取值。在这种情况下,我不知道该字典的嵌套级别。任何帮助将不胜感激,谢谢!!!
附言我正在使用python 3

最佳答案

递归怎么样?

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:根据您提供的输入,它将找到最深的级别,但是,这并不涵盖某些情况,例如,键e也是嵌套词典,其中嵌套的字典在n + 1级别(其中n等于)到键a的深度。

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}

关于python - 获取python中最深层嵌套dict的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55272369/

10-12 17:45
查看更多