Mam problemy z używaniem tej collections.OrderedDict
klasy. Używam Pythona 2.7 na Raspbian, dystrybucji Debiana dla Raspberry Pi. Próbuję wydrukować dwa słowniki w celu porównania (obok siebie) do przygody z tekstem. Kolejność jest niezbędna do dokładnego porównania. Bez względu na to, czego próbuję, słowniki drukują w zwykły, nieuporządkowany sposób.
Oto, co otrzymuję, robiąc to na moim 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)])
Oczywiście coś jest nie tak, ponieważ wypisuje wywołanie funkcji i umieszcza klucze i grupy wartości w zagnieżdżonej liście ...
Oto, co otrzymałem, uruchamiając coś podobnego na moim komputerze:
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')])
Tym razem jest w porządku, ale nie powinno się drukować innych rzeczy, prawda? (Umieszczenie go na liście i pokazanie wywołania funkcji.)
Gdzie popełniam błąd? Nie powinno to mieć nic wspólnego z wersją pi Pythona, ponieważ jest to tylko wersja dla Linuksa.
OrderedDict
jest sortowany według kolejności reklamowej, a nie alfanumerycznej kolejności kluczy.