点从列表到dicitonary变量(point from a list into a diciton

2019-09-21 02:51发布

假设你有一个列表

a = [3,4,1]

我希望这个信息指向词典:

b[3][4][1]

现在,我需要的是一个例行程序。 之后,我看到了价值,读写里面B的位置的值。

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

Answer 1:

假设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提前。 如果你这样做,你可以去内维斯的回答 。



Answer 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


Answer 3:

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

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

你可以把这个函数内部



文章来源: point from a list into a dicitonary variable