Estou tendo problemas para usar a collections.OrderedDict
classe. Estou usando o Python 2.7 no Raspbian, a distribuição Debian para o Raspberry Pi. Estou tentando imprimir dois dicionários para comparação (lado a lado) de uma aventura de texto. A ordem é essencial para comparar com precisão. Não importa o que eu tente, os dicionários imprimem da maneira habitual e não ordenada.
Aqui está o que recebo quando faço no meu 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, há algo errado, porque está imprimindo a chamada de função e colocando as chaves e os grupos de valores em uma lista aninhada ...
Isto é o que eu consegui executando algo semelhante no meu 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')])
Desta vez, está em ordem, mas não deveria imprimir as outras coisas, certo? (Colocando na lista e mostrando a chamada de função.)
Onde estou cometendo meu erro? Não deve ter nada a ver com a versão pi do Python, porque é apenas a versão Linux.
OrderedDict
é classificado por ordem de inserção, não por ordem alfanumérica.