2013-06-06 3 views

risposta

21

È possibile utilizzare il enumerate() function:

for count, (key, value) in enumerate(my_dict.iteritems(), 1): 
    print key, value, count 

enumerate() aggiunge in modo efficiente un conteggio per l'iteratore si sta loop sopra. Nell'esempio sopra dico allo enumerate() di iniziare a contare allo 1 per abbinare il tuo esempio; il valore di default è quello di iniziare a 0.

Demo:

>>> somedict = {'foo': 'bar', 42: 'Life, the Universe and Everything', 'monty': 'python'} 
>>> for count, (key, value) in enumerate(somedict.iteritems(), 1): 
...  print key, value, count 
... 
42 Life, the Universe and Everything 1 
foo bar 2 
monty python 3 
+0

Grazie Non sapevo che u può elencare anche su un contenitore come dizionario che non ha nessun ordinamento. Ho usato enumerare sulla lista prima. – vkaul11

+0

una piccola differenza - il codice originale inizia da 1 (quindi usa 'enumerate (items, 1)') –

+0

@ vkaul11: c'è un ordinamento, non è solo un ordine su cui fare affidamento in quanto dipende dall'inserimento e cancellazione cronologia del dizionario. :-) In altre parole, il metodo '.iteritems()' restituirà elementi in un ordine * arbitrario *. 'enumerate()' non interessa; conta solo elementi come il tuo codice, aggiungendo 1 al contatore interno ogni volta. –

Problemi correlati