Sto riscontrando problemi nell'uso della collections.OrderedDict
classe. Sto usando Python 2.7 su Raspbian, la distro Debian per Raspberry Pi. Sto cercando di stampare due dizionari per il confronto (fianco a fianco) per un'avventura testuale. L'ordine è essenziale per un confronto accurato. Indipendentemente da ciò che provo, i dizionari stampano nel loro solito modo non ordinato.
Ecco cosa ottengo quando lo faccio sul mio 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)])
Ovviamente c'è qualcosa che non va perché stampa la chiamata di funzione e mette le chiavi e i gruppi di valori in un elenco nidificato ...
Questo è quello che ho ottenuto eseguendo qualcosa di simile sul mio 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')])
Questa volta è in ordine, ma non dovrebbe stampare le altre cose però giusto? (L'inserisce nell'elenco e mostra la chiamata di funzione.)
Dove sto facendo il mio errore? Non dovrebbe avere nulla a che fare con la versione pi di Python perché è solo la versione Linux.
OrderedDict
è ordinato per ordine di inserzione, non per ordine di chiave alfanumerica.