¿Por qué el orden de dict y dict.items () es diferente?

>>> d = {'A':1, 'b':2, 'c':3, 'D':4} >>> d {'A': 1, 'D': 4, 'b': 2, 'c': 3} >>> d.items() [('A', 1), ('c', 3), ('b', 2), ('D', 4)] 

¿El orden se aleatoriza dos veces cuando llamo d.items ()? ¿O simplemente se aleatoriza de manera diferente? ¿Hay alguna forma alternativa de hacer que d.items () devuelva el mismo orden que d?

Edición: parece ser una cosa IPython donde ordena automáticamente el dict. Normalmente, dict y dict.items () deben estar en el mismo orden.

Parece que has probado esto en IPython. IPython utiliza sus propias instalaciones especializadas de impresión bonita para varios tipos, y la impresora bonita para dictos ordena las claves antes de imprimir (si es posible). La llamada d.items() no ordena las claves, por lo que la salida es diferente.

En una sesión ordinaria de Python, el orden de los elementos en la reproducción del dict coincidirá con el orden de los elementos del método de items . Se supone que el orden de iteración del dictado es estable siempre que no se modifique un dict. (Esta garantía no se extiende explícitamente a la reproducción del dict, pero sería sorprendente si la iteración implícita en la repetición rompiera la coherencia con otras formas de iteración).