1

我在尝试插入 3d 数组时遇到类型错误:“TypeError: 'int' object is not subscriptable”。我已经检查并确认计数器工作正常(对于 z 计数器,x=-1 是我在此处排除的较大循环的一部分)。我想获取字符串 temp 并将其放在数组 temp2 的 [0][0][0] 处,迭代我的计数器并继续添加到列表中,但我显然不知道该怎么做。我需要以某种方式初始化数组 temp2 吗?当我不知道它应该有多大时,我该怎么做?感谢您的帮助。

在程序顶部初始化:

temp2=[]
t=0
temp=""

这是引发异常的代码

z=-1
for subtree in result.subtrees(filter=lambda t: t.node == 'Proper'):
    z=z+1
    y=0

    # this iterates through the actual subtree
    for p in subtree:
        temp = str(p[0])

        temp2.insert([t][z][y],temp)  #This line raises the exception
        y=y+1

#increments the first dimension of the array and resets the temp list      
t=t+1
temp = ""
4

2 回答 2

1

你可能想这样defaultdict使用

from collections import defaultdict
temp2 = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))

temp2[t][z][y] = temp

例如:

from collections import defaultdict
temp2 = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
temp2[1][2][3] = 4
print temp2[1][2][3]

输出

4
于 2013-10-12T12:25:21.673 回答
0

我将建议,如果你真的想要一个 Python 中的 3D 数组,要么寻找一个已经有一个库(可能是 numpy),要么编写一个类,当在构造函数中传递维度时,它会创建一个具有正确“形状”的数组”。

没有它,你可能会意外地得到参差不齐的“数组”。

于 2013-10-12T13:58:24.897 回答