我有一些列表和值以任意深度相互嵌套。
nested = [
3,
[1, 4, 2],
[3, [5], 6, 7, [5]],
[3],
[[1, 1],[2, 2]]
]
我正在尝试在此嵌套混乱中设置一个值 使用任意长的索引。
示例索引:
index = (2, 1)
因此在示例索引处设置一个项目:
nested[2][1] = new_value
如果我们知道索引的长度,我们可以:
nested[index[0]][index[1]] = new_value
问题在于索引不是设置的长度!
我想出了如何获取任意长度索引的值:
def nested_get(o, index):
if not index:
return o
return nested_get(o[index[0]], index[1:])
我知道numpy数组可以做到这一点:np_array[index] = new_value
我该如何实现一个使用纯Python进行类似操作的函数?类似于nested_get
,但用于设置值。
答案 0 :(得分:1)
您可以使用递归功能进行操作:
def nested_set(x, index, value):
if isinstance(index, int):
x[index] = value
return
elif len(index) == 1:
x[index[0]] = value
return
nested_set(x[index[0]], index[1:], value)
很可能存在比列表更好的数据结构。