tutorial sirve que programacion para lenguaje español caracteristicas python dictionary

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



python tutorial (3)

La specification para el tipo de diccionario incorporado niega cualquier preservación de orden, es mejor pensar en un diccionario como un conjunto desordenado de key: value pares de key: value ...

Es posible que desee comprobar el módulo OrderedDict , que es una implementación de un diccionario ordenado con Key Insertion Order.

Esta pregunta ya tiene una respuesta aquí:

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 igual siempre y no tengo idea de por qué.


La verdadera pregunta debería ser "¿por qué no?" ... un diccionario desordenado probablemente se implemente como una tabla hash (de hecho, la documentation Python establece esto en forma absoluta) donde el orden de los elementos está bien definido pero no es obvio de inmediato. Sus observaciones coinciden perfectamente con las reglas de una tabla hash: aparentemente arbitraria, pero con un orden constante.


Lo único que puede confiar en el orden del diccionario es que el orden seguirá siendo el mismo si no hay modificaciones en el diccionario; por ejemplo, repetir dos veces un diccionario sin modificarlo dará como resultado la misma secuencia de claves. Sin embargo, aunque el orden de los diccionarios de Python es determinista, puede estar influenciado por factores tales 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})