Diccionario de iteraciones de Python por índice

Quiero recorrer un diccionario en python por número de índice.

Ejemplo:

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

Quiero recorrer el diccionario de primero a último para poder acceder a los elementos del diccionario por sus índices. Por ejemplo, el primer elemento será Apple y el segundo elemento será mango y el valor será verde.

Algo como esto:

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

No puedo pensar en ninguna razón por la que querrías hacer eso. Si solo necesitas iterar sobre el diccionario, puedes hacerlo.

 for key, elem in testDict.items(): print key, elem 

O

 for i in testDict: print i, testDict[i] 

Puedes iterar sobre las claves y obtener valores por claves:

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

Puede iterar sobre claves y valores correspondientes:

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

Puede usar enumerate si desea índices (recuerde que los diccionarios no tienen un pedido):

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

Hay algunas respuestas muy buenas aquí. Me gustaría añadir lo siguiente aquí también:

 some_dict = { "foo": "bar", "lorem": "ipsum" } for index, (key, value) in enumerate(some_dict.items()): print(index, key, value) 

resultados en

 0 foo bar 1 lorem ipsum 

Parece funcionar con Python 2.7 y 3.5

Quería saber (idx, clave, valor) para un OrderedDict de Python hoy (mapeo de SKU a cantidades en el orden en que deberían aparecer en un recibo). Las respuestas aquí fueron todos los fastidiosos.

En Python 3, al menos, esta forma funciona y tiene sentido.

 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 

Como quieres iterar en orden, puedes usar sorted :

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

Hacer esto:

 for i in dict.keys(): dict[i]