¿Por qué Python está ordenando mi diccionario así?

Aquí está el diccionario que tengo

propertyList = { "id": "int", "name": "char(40)", "team": "int", "realOwner": "int", "x": "int", "y": "int", "description": "char(255)", "port": "bool", "secret": "bool", "dead": "bool", "nomadic": "bool", "population": "int", "slaves": "int", } 

Pero cuando lo imprimo con “\ n” .join (myDict) obtengo esto

 name nomadic dead port realOwner secret slaves team y x population id description 

Sé que un diccionario no está ordenado, pero sale lo mismo cada vez y no tengo idea de por qué.

Para versiones anteriores de Python, la pregunta real debería ser “¿por qué no?”: Un diccionario desordenado generalmente se implementa como una tabla hash en la que el orden de los elementos está bien definido pero no es inmediatamente obvio ( la documentación de Python se usa para indicar esto ). Sus observaciones coinciden perfectamente con las reglas de una tabla hash: aparente orden arbitrario, pero constante.

Python ha cambiado desde entonces su implementación de dict para preservar el orden de inserción, y esto está garantizado a partir de Python 3.7 . Por lo tanto, la implementación ya no constituye una tabla hash pura (sino que aún se utiliza una tabla hash en su implementación).

La especificación para el tipo de diccionario incorporado excluye cualquier conservación de orden, lo mejor es pensar en un diccionario como un conjunto no ordenado de key: value pares de key: value

Es posible que desee verificar el módulo OrderedDict , que es una implementación de un diccionario ordenado con Orden de inserción de clave.

Lo único sobre el orden del diccionario en el que puede confiar es que el orden seguirá siendo el mismo si no hay modificaciones al diccionario; Por ejemplo, si se itera dos veces en un diccionario sin modificarlo, se obtendrá la misma secuencia de teclas. Sin embargo, aunque el orden de los diccionarios de Python es determinista, puede verse influido por factores como el orden de las inserciones y eliminaciones, por lo que los diccionarios iguales pueden terminar con diferentes ordenamientos:

 >>> {1: 0, 2: 0}, {2: 0, 1: 0} ({1: 0, 2: 0}, {1: 0, 2: 0}) >>> {1: 0, 9: 0}, {9: 0, 1: 0} ({1: 0, 9: 0}, {9: 0, 1: 0})