2010-06-10 3 views
9

Je suis nouveau à Python.Comment obtenir la clé d'un élément lors d'une boucle FOR dans un dictionnaire ou une liste en Python?

Dire que j'ai une liste:

list = ['A','B','C','D'] 

La clé pour chaque élément est ici respectivement 0,1,2,3 - droit?

Maintenant, je vais faire une boucle à travers avec une boucle ...

for item in list: 
    print item 

C'est génial, je peux imprimer ma liste.

Comment obtenir la clé ici? Par exemple étant capable de faire:

print key 
print item 

sur chaque boucle?

Si cela n'est pas possible avec une liste, où les clés ne sont pas déclarées moi-même, est-ce possible avec un dictionnaire?

Merci

+6

Ne pas utiliser 'list' comme nom de variable. –

Répondre

9

La réponse est différente pour list s et dict s.

Un list n'a pas de key. Chaque article aura un index. Vous pouvez énumérer une liste comme ceci:

>>> l = ['A','B','C','D'] 
>>> for index, item in enumerate(l): 
...  print index 
...  print item 
... 
0 
A 
1 
B 
2 
C 
3 
D 

J'utilisé votre exemple, mais appelé list « l », pour éviter un affrontement avec un mot réservé.

Si vous itérer sur une dict, vous êtes remis la clé:

>>> d = {0: 'apple', 1: 'banana', 2: 'cherry', 3: 'damson', } 
>>> for k in d: 
...  print k 
...  print d[k] 
... 
0 
apple 
1 
banana 
2 
cherry 
3 
damson 
+0

Merci, comme le vôtre était la première réponse, je vais marquer cela comme accepté. Bon point sur le nom de la variable de la liste, c'était juste un exemple, mais une bonne pratique pour moi de m'en souvenir. Merci à tous ceux qui ont répondu. Je trouve vraiment difficile de maîtriser Python au fur et à mesure que je progresse, venant de PHP. – Mike

+0

également merci de clarifier sur les termes "clé" et "index". PHP semble embrouiller ces choses dans une grosse boule, ou du moins c'est comme ça que j'ai appris. – Mike

10

Vous voulez l'index, pas la clé. Pour cela, vous pouvez utiliser enumerate:

for index, item in enumerate(l): 
    print index 
    print item 

Ceci est mentionné dans la section Looping Techniques dans le tutoriel Python qui couvre également en boucle sur les dictionnaires tout en obtenant la clé et la valeur.

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'} 
>>> for k, v in knights.iteritems(): 
...  print k, v 
... 
gallahad the pure 
robin the brave 
+3

vous avez oublié l'énumération;) –

+0

Je dirais que l'index est la clé ... – mpen

3

Vous devez utiliser un dictionnaire, de toute façon, vous pouvez faire quelque chose comme:

for index, item in enumerate(yourlist): 
    print "index:%d item:%s" % (index, item) 
Questions connexes