从列表指向字典变量

时间:2012-08-10 15:53:19

标签: python python-2.7 python-2.6 python-2.x

假设你有一个清单

a = [3,4,1]

我希望这些信息指向字典:

b[3][4][1]

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

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

3 个答案:

答案 0 :(得分: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' answer

答案 1 :(得分: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

答案 2 :(得分:1)

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

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

你可以把它放在一个函数