web-dev-qa-db-fra.com

Python Itérer Dictionnaire par Index

Je veux parcourir un dictionnaire en python par numéro d'index.

Exemple :

 dict = {'Apple':'red','mango':'green','orange':'orange'}

Je souhaite parcourir le dictionnaire du premier au dernier afin que je puisse accéder aux éléments du dictionnaire par leurs index. Par exemple, le premier élément sera Apple et le deuxième élément sera la mangue et sa valeur sera verte.

Quelque chose comme ça:

for i in range(0,len(dict)):
    dict.i
27
Dev.K.

Vous pouvez parcourir des clés et obtenir des valeurs par clés:

for key in dict.iterkeys():
    print key, dict[key]

Vous pouvez parcourir les clés et les valeurs correspondantes:

for key, value in dict.iteritems():
    print key, value

Vous pouvez utiliser enumerate si vous voulez des index (rappelez-vous que les dictionnaires n'ont pas d'ordre): 

>>> for index, key in enumerate(dict):
...     print index, key
... 
0 orange
1 mango
2 Apple
>>> 
73
alecxe

Il y a de très bonnes réponses ici. J'aimerais ajouter ce qui suit ici aussi:

some_dict = {
    "foo": "bar",
    "lorem": "ipsum"
}

for index, (key, value) in enumerate(some_dict.items()):
    print(index, key, value)

résulte en 

0 foo bar
1 lorem ipsum

Semble fonctionner avec Python 2.7 et 3.5

14
Serguei Fedorov

Je voulais savoir (idx, clé, valeur) pour un python OrderedDict aujourd'hui (mappage de SKU sur des quantités dans l'ordre de leur apparition sur un reçu). Les réponses ici étaient toutes décevantes. 

En python 3, au moins, cette méthode fonctionne et a un sens.

In [1]: from collections import OrderedDict
   ...: od = OrderedDict()
   ...: od['a']='spam'
   ...: od['b']='ham'
   ...: od['c']='eggs'
   ...: 
   ...: for i,(k,v) in enumerate(od.items()):
   ...:    print('%d,%s,%s'%(i,k,v))
   ...: 
0,a,spam
1,b,ham
2,c,eggs
2
untitled90

Puisque vous voulez itérer dans l’ordre, vous pouvez utiliser sorted:

for k, v in sorted(dict.items()):
    print k,v
1
jh314

Faire ceci:

for i in dict.keys():
  dict[i]
0
Mark Nenadov