2010-10-22 12 views
9

Quiero crear una matriz asociativa con valores leídos de un archivo. Mi código se ve más o menos así, pero me da un error al decir que no puedo las indices deben ser enteros.Python: Crear una matriz asociativa en un bucle

Gracias =]

for line in open(file): 
    x=prog.match(line) 
    myarray[x.group(1)]=[x.group(2)] 
+1

Dado que su código es incompleto, tenemos que adivinar. Por favor incluya ** todo ** el código relevante. 'myarray', por ejemplo, debe inicializarse en algún lugar o obtendría un NameError. Por favor incluya ** todo ** el código relevante. –

Respuesta

1

Debido a los índices de matriz debe ser un número entero

>>> a = [1,2,3] 
>>> a['r'] = 3 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: list indices must be integers, not str 
>>> a[1] = 4 
>>> a 
[1, 4, 3] 

x.group (1) debe ser un número entero o

si están utilizando mapa definir el primer mapa

myarray = {} 
for line in open(file): 
    x=prog.match(line) 
    myarray[x.group(1)]=[x.group(2)] 
+0

pero quiero una matriz asociativa, también conocido como tabla de hash, o mapeo – nubme

+0

@nubme: consiguió y editado mi respuesta – pyfunc

4

Las matrices asociativas en Python se llaman asignaciones. El tipo más común es el dictionary.

+0

Gracias Ignacio, pero ¿cómo lo añado a través de bucle si no sé todos los valores antes de tiempo. – nubme

+0

Comience con un diccionario vacío. –

+0

nm lo consiguió. gracias =] – nubme

12
myarray = {} # Declares myarray as a dict 
for line in open(file, 'r'): 
    x = prog.match(line) 
    myarray[x.group(1)] = [x.group(2)] # Adds a key-value pair to the dict 
Cuestiones relacionadas