2010-10-22 19 views
9

Voglio creare un array associativo con valori letti da un file. Il mio codice ha un aspetto simile a questo, ma mi dà un errore dicendo che non è possibile che gli indici siano obbligatori.Python: Crea array associativo in un loop

Grazie =]

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

Poiché il codice è incompleto, dobbiamo indovinare. Si prega di includere ** tutti ** il codice pertinente. 'myarray', ad esempio, deve essere inizializzato da qualche parte o si otterrebbe un NameError. Si prega di includere ** tutti ** il codice pertinente. –

risposta

1

Poiché indici array dovrebbe essere un intero

>>> 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) deve essere un numero intero o

se si utilizza la mappa definire prima la mappa

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

ma voglio un array associativo, aka tabella hash, o mappare – nubme

+0

@nubme: ottenuto e modificato la mia risposta – pyfunc

4

Gli array associativi in ​​Python sono chiamati mappature. Il tipo più comune è dictionary.

+0

Grazie ignacio, ma come lo aggiungerei via ciclo se non so tutti i valori in anticipo. – nubme

+0

Inizia con un dizionario vuoto. –

+0

nm capito. grazie =] – 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 
Problemi correlati