假设你有一个清单
a = [3,4,1]
我希望这些信息指向字典:
b[3][4][1]
现在,我需要的是例程。在我看到值之后,在b的位置读取和写入一个值。
我不喜欢复制变量。我想直接更改变量b的内容。
答案 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]
你可以把它放在一个函数
中