Estoy teniendo problemas para usar la collections.OrderedDict
clase. Estoy usando Python 2.7 en Raspbian, la distribución de Debian para Raspberry Pi. Estoy tratando de imprimir dos diccionarios para poder compararlos (lado a lado) para una aventura de texto. El orden es esencial para comparar con precisión. No importa lo que intente, los diccionarios imprimen en su forma desordenada habitual.
Esto es lo que obtengo cuando lo hago en mi RPi:
import collections
ship = {"NAME": "Albatross",
"HP":50,
"BLASTERS":13,
"THRUSTERS":18,
"PRICE":250}
ship = collections.OrderedDict(ship)
print ship
# OrderedDict([('PRICE', 250), ('HP', 50), ('NAME', 'Albatross'), ('BLASTERS', 13), ('THRUSTERS', 18)])
Obviamente, hay algo que no está bien porque está imprimiendo la llamada a la función y colocando las claves y los grupos de valores en una lista anidada ...
Esto es lo que obtuve al ejecutar algo similar en mi PC:
import collections
Joe = {"Age": 28, "Race": "Latino", "Job": "Nurse"}
Bob = {"Age": 25, "Race": "White", "Job": "Mechanic", "Random": "stuff"}
#Just for clarity:
Joe = collections.OrderedDict(Joe)
Bob = collections.OrderedDict(Bob)
print Joe
# OrderedDict([('Age', 28), ('Race', 'Latino'), ('Job', 'Nurse')])
print Bob
# OrderedDict([('Age', 25), ('Race', 'White'), ('Job', 'Mechanic'), ('Random', 'stuff')])
Esta vez, está en orden, pero no debería imprimir las otras cosas, ¿verdad? (Ponerlo en la lista y mostrar la llamada a la función).
¿Dónde estoy cometiendo mi error? No debería tener nada que ver con la versión pi de Python porque es solo la versión de Linux.
OrderedDict
se ordena por orden de inserción, no por orden de teclas alfanuméricas.