3

假设你有一个列表

a = [3,4,1]

我想用这些信息指向字典:

b[3][4][1]

现在,我需要的是例行公事。在我看到值之后,在 b 的位置读取和写入一个值。

我不喜欢复制变量。我想直接更改变量 b 的内容。

4

3 回答 3

12

假设b是一个嵌套字典,你可以做

reduce(dict.get, a, b)

访问b[3][4][1].

对于更一般的对象类型,请使用

reduce(operator.getitem, a, b)

写入值有点复杂:

reduce(dict.get, a[:-1], b)[a[-1]] = new_value

所有这一切都假设您现在没有a提前知道元素的数量。如果你这样做,你可以选择neves 的回答

于 2012-08-10T15:55:10.957 回答
2

这将是基本算法:

要获取项目的值:

mylist = [3, 4, 1]
current = mydict
for item in mylist:
    current = current[item]
print(current)

要设置项目的值:

mylist = [3, 4, 1]
newvalue = "foo"

current = mydict
for item in mylist[:-1]:
    current = current[item]
current[mylist[-1]] = newvalue
于 2012-08-10T16:02:38.627 回答
1

假设列表长度是固定的并且已知

a = [3, 4, 1]
x, y, z = a
print b[x][y][z]

你可以把它放在一个函数中

于 2012-08-10T15:56:57.197 回答