¿”For key in dict” en python siempre itera en un orden fijo?

¿El código de python?

for key in dict: ... 

, donde dict es un tipo de datos dict, siempre iterar en un orden fijo con respecto a la key ? Por ejemplo, supongamos que dict={"aaa":1,"bbb",2} , ¿el código anterior siempre deja primero la key="aaa" y luego la key="bbb" (o en otro orden fijo)? ¿Es posible que el orden sea aleatorio? Estoy usando python 3.3 en ubuntu 13 y asummos que este entorno de ejecución no cambia. Gracias.

agregue una cosa: durante varias ejecuciones, la variable dict permanece sin cambios, es decir, se genera una vez y se lee varias veces.

Intrínsecamente, un diccionario no tiene ningún orden en el que almacena las claves. Así que no puedes confiar en el pedido. (No asumiría que el orden no se modificará incluso cuando el entorno sea idéntico).

Una de las pocas formas confiables:

 for key in sorted(yourDictionary.keys()): # Use as key and yourDictionary[key] 

EDITAR : Respuesta a su comentario: Python no almacena claves de manera aleatoria. Todo lo que dice la documentación es que no debe confiar en este pedido . Depende de la implementación cómo se ordenan las claves. Lo que voy a decir aquí sobre su pregunta es: si confía en este pedido, probablemente esté haciendo algo mal. En general, no deberías confiar en esto en absoluto. 🙂

 CPython implementation detail: Keys and values are listed in an arbitrary order which is non-random, varies across Python implementations, and depends on the dictionary's history of insertions and deletions. 

Para más información: http://docs.python.org/2/library/stdtypes.html#dict.items

Además, puede usar colecciones.Pedido ordenado para hacer el pedido fijo.