Viac na
Ako môžem zoradiť slovník podľa kľúča?
Ako by bolo možné prejsť z {2:3, 1:89, 4:5, 3:0}
na {1:89, 2:3, 3:0, 4:5}
?
Pozrel som si niekoľko príspevkov, ale všetky používajú operátor "sorted", ktorý vracia tuples.
829
3
Štandardné slovníky jazyka Python sú neusporiadané. Aj keby ste dvojice (kľúč,hodnota) zoradili, nedokázali by ste ich uložiť do
dict
tak, aby sa zachovalo ich poradie.Najjednoduchšie je použiť
OrderedDict
, ktorý si pamätá poradie, v akom boli prvky vložené:Nevadí, že sa vypíše
od
; bude to fungovať podľa očakávania:Python 3
Pre používateľov Pythonu 3 je potrebné použiť
.items()
namiesto.iteritems()
:Samotné slovníky nemajú usporiadané položky ako také, ak by ste ich chceli vytlačiť atď. podľa nejakého poradia, tu je niekoľko príkladov:
V jazyku Python 2.4 a vyššom:
dáva:
(Python pod 2.4:)
Zdroj: http://www.saltycrane.com/blog/2007/09/how-to-sort-python-dictionary-by-keys/
Ako už spomenuli iní, slovníky sú vo svojej podstate neusporiadané. Ak však ide len o zobrazenie slovníkov usporiadaným spôsobom, môžete prepísať metódu
__str__
v podtriede slovníka a použiť túto triedu slovníka namiesto zabudovanéhodict
. Napr.Všimnite si, že to nič nemení na spôsobe uloženia kľúčov, na poradí, v akom sa vrátia, keď nad nimi iterujete atď., len na spôsobe ich zobrazenia pomocou funkcie
print
alebo na konzole Pythonu.