1
假设我有(1, 2, 3)
一个元组,并希望指数多维数组与它如:索引阵列与一个元组
index = (1, 2, 3)
table[index] = 42 # behaves like table[1][2][3]
index
有一个未知的维数,所以我不能做的:
table[index[0]][index[1]][index[2]]
我知道我可以做这样的事情:
functools.reduce(lambda x, y: x[y], index, table)
但它的完全丑陋(也许还是效率低下),所以我想知道是否有更好,更多Pythonic的选择。
编辑:也许一个简单的循环是最好的选择:
elem = table
for i in index:
elem = elem[i]
EDIT2:其实,有一个与这两个解决方案的一个问题:我无法将值分配给索引数组:-(,回丑:
elem = table
for i in index[:-1]:
elem = elem[i]
elem[index[-1]] = 42
聪明的解决方案!但是,我的数组实际上是一个连续的ctypes.c_float,不能在那里使用字典。好的回答。 – 2012-03-26 23:12:54