2010-10-22 4 views
9

Je souhaite créer un tableau associatif avec des valeurs lues dans un fichier. Mon code ressemble à ceci, mais il me donne une erreur en disant que je ne peux pas les indices doivent être ints.Python: Créer un tableau associatif dans une boucle

Merci =]

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

Puisque votre code est incomplet, nous devons le deviner. Veuillez inclure ** tout ** le code correspondant. 'myarray', par exemple, doit être initialisé quelque part ou vous obtiendrez une NameError. Veuillez inclure ** tout ** le code correspondant. –

Répondre

1

Parce que les indices de tableau doit être un entier

>>> 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) doit être un entier ou

si vous utilisez définir la carte la carte en premier

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

mais je veux un tableau associatif, aka table de hachage, ou le mappage – nubme

+0

@nubme: got it et édité ma réponse – pyfunc

4

Les tableaux associatifs en Python sont appelés mappages. Le type le plus commun est le dictionary.

+0

Merci ignacio, mais comment je l'ajouterais via une boucle si je ne connais pas toutes les valeurs à l'avance. – nubme

+0

Commencez avec un dictionnaire vide. –

+0

nm l'a eu. merci =] – 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 
Questions connexes