Vairāk
Kā sakārtot vārdnīcu pēc atslēgas?
Kāds būtu labs veids, kā no {2:3, 1:89, 4:5, 3:0}
pāriet uz {1:89, 2:3, 3:0, 4:5}
?
Es pārbaudīju dažus ziņojumus, bet visos tajos ir izmantots "sorted" operators, kas atgriež tuples.
829
3
Standarta Python vārdnīcas nav sakārtotas. Pat ja jūs sakārtotu (atslēga,vērtība) pārus, jūs nevarētu tos saglabāt
dict
tādā veidā, lai saglabātu sakārtojumu.Visvienkāršākais veids ir izmantot
OrderedDict
, kas atceras, kādā secībā elementi ir ievietoti:Nepievērsiet uzmanību tam, kā tiek izdrukāts
od
; tas darbosies, kā paredzēts:Python 3
Python 3 lietotājiem ir jāizmanto
.items()
, nevis.iteritems()
:Pašām vārdnīcām kā tādām nav sakārtotu elementu, ja vēlaties tos izdrukāt utt., lai tos sakārtotu, šeit ir daži piemēri:
Python 2.4 un jaunākās versijās:
dod:
(Python zem 2.4:)
Avots: http://www.saltycrane.com/blog/2007/09/how-to-sort-python-dictionary-by-keys/
Kā jau citi ir minējuši, vārdnīcas pēc būtības nav sakārtotas. Tomēr, ja runa ir tikai par vārdnīcu parādīšanu sakārtotā veidā, jūs varat pārtaisīt
__str__
metodi vārdnīcas apakšklasē un izmantot šo vārdnīcu klasi, nevis iebūvētodict
. Piem.Ņemiet vērā, ka tas neko nemaina attiecībā uz to, kā atslēgas tiek saglabātas, kādā secībā tās atgriezīsies, kad tās iterēsiet utt., tikai to, kā tās tiks parādītas ar
print
vai python konsoles palīdzību.