2012-04-29 39 views
6

Potrzebuję pomocy w tym przypadku:Python: jak wyłączyć automatyczne sortowanie przy tworzeniu słownika

m={} 
m[1]=1 
m[333]=333 
m[2]=2 

# Result: 
{1: 1, 2: 2, 333: 333} 

więc nawet kiedy nie wchodzi „333” ostatni, mam to „333” wymienione w koniec słownika po wydrukowaniu. dlaczego ten "słownik" dokonuje automatycznego sortowania? i jak to wyłączyć? mogę utworzyć funkcję ponownego sortowania, aby naprawić zamówienie. ale to nie jest to, czego chcę, po prostu chcę wydrukować i uzyskać zamówienie wyjściowe, podobnie jak kolejność, gdy wprowadzam dane. Czy istnieje jakieś dobre wytłumaczenie i czy istnieje jakieś rozwiązanie?

+0

http://stackoverflow.com/questions/1872329/storing-python-dictionary-entries-in-the-order-they-are- bodyhed – shiva

+0

Najprawdopodobniej chcesz użyć 'OrderedDict'. –

+0

Thanx guyz, to wyjaśnia, dlaczego mam ten problem. Twoje zdrowie. – andio

Odpowiedz

20

To nie jest sortowanie. dict nie jest w ogóle zamawiana, więc nie można w żaden sposób wpłynąć na kolejność klawiszy. W wersjach 2.7 i 3.1+ istnieje collections.OrderedDict, jest też standalone module dla 2.4-2.6.

+0

+1: Usunąłem moją odpowiedź na korzyść tego. – Johnsyweb

+0

fajne. orderdict to ten, którego szukam. Wielkie dzięki. – andio

+0

@andio akceptuj anwser następnie – wRAR

1

Przedmioty przechowywane w słowniku nie mają żadnej nieodłącznej kolejności. Kolejność, w jakiej są drukowane, zależy wyłącznie od wartości mieszania dla każdego z kluczy i innych elementów w słowniku.

+0

Bardzo dużo za informacje. – andio

Powiązane problemy