首页 > 解决方案 > 是否可以递归地编辑可迭代对象中的子元素

问题描述

我得到了这种结构提供的一些覆盖元素:

(keys, value)

我想用它来改变嵌套对象(字典和列表)中的值。它可能看起来像这样:

data[keys[0]][keys[1]][keys[2]] = value

难点是,键的数量是可变的。我不知道如何递归地管理这个。

标签: pythonpython-3.x

解决方案


您可以执行以下操作(迭代地):

def setkeys(data, keys, value):
    *path, last = keys
    for key in path:
        data = data[key]
    data[last] = value

或者对于递归解决方案:

def setkeys(data, keys, value):
    head, *tail = keys
    if tail:
        setkeys(data[head], tail, value)
    else:
        data[head] = value

推荐阅读