/ / inserindo em uma matriz 3d em python - python, matrizes, lista, exceção, inserção

Inserindo em um array 3D em python - python, arrays, list, exception, insert

Estou recebendo um erro de tipo tentando inserir em umMatriz 3d: "TypeError:" int "objeto não é subscrito". Verifiquei e confirmei que os contadores estão funcionando corretamente (para o contador z, x = -1 faz parte de um loop maior que excluí aqui). Eu quero pegar a string temp e colocá-la em [0] [0] [0] da matriz temp2, iterar meus contadores e continuar adicionando à lista, mas obviamente eu não sei como fazer isso. Preciso inicializar o array temp2 de alguma forma e como faço isso quando não sei qual deve ser o tamanho? obrigado pela ajuda.

Inicializado na parte superior do programa:

temp2=[]
t=0
temp=""

Este é o código que gera a exceção

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 = ""

Respostas:

1 para resposta № 1

Você pode querer usar defaultdict como isso

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

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

Por exemplo:

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

Saída

4

0 para resposta № 2

Eu vou sugerir que se você realmente quer umMatriz 3D em Python, procure uma biblioteca que já tenha uma (talvez numpy) ou escreva uma classe que, quando aprovada nas dimensões do construtor, crie uma matriz com a "forma" correta.

Sem isso, você pode acidentalmente acabar com "matrizes" irregulares.