Python Sort Dictionary etter verdi

Python Sort Dictionary etter verdi
I Python refererer en ordbok til en uordnet samling av gjenstander i form av nøkkelverdipar.

Ordbøker er nyttige når du lagrer kartlagte data siden hver tast er assosiert med den tilsvarende verdien.

Selv om ordbøker ikke er i orden, blir ordbøker sortert ved hjelp av Sett inn ordre I nyere versjoner av Python.

La oss lære hvordan vi kan sortere en ordbok basert på verdier.

Python sortert funksjon

Vi kan bruke sortert () funksjon for å sortere en ordbok etter verdi. Funksjonssyntaks er vist i følgende:

sortert (iterable, nøkkel = ingen, omvendt = falsk)

Funksjonsparametrene er vist nedenfor:

  1. iterable - refererer til et iterable objekt som en ordbok, liste osv.
  2. nøkkel - refererer til en funksjon som fungerer som nøkkelen for sorteringen
  3. omvendt - lar funksjonen sortere den iterable i omvendt rekkefølge

Vi kan bruke den sorterte funksjonen til å sortere en ordbok etter verdi, som vist i følgende eksempel:

db =
'Mysql': 1000,
'PostgreSql': 20000,
'Mongodb': 250,
'Sqlite': 100,
'Redis': 5000

sorted_values ​​= Sortered (DB.elementer (), nøkkel = lambda x: x [1], revers = true)

I forrige eksempelkode starter vi med å lage ordboken vi ønsker å sortere. Ordboken har databasetypen som nøkkelen og antall poster som verdien.

Vi bruker deretter sortert () Funksjon for å sortere varene i ordboken vår. Til slutt db.Itmes Funksjon lar oss få ordbokens verdier som en iterable liste.

Dette fjerner behovet for oss for å referere til verdiene etter indeksposisjonene.

Vi gir en anonym funksjon i nøkkelparameteren som lar oss sortere verdiene fra listen.

Siden vi ønsker at dataene våre skal sorteres fra største til minste, setter vi omvendt parameter til "True".

Nå skal den forrige koden returnere en liste med de sorterte verdiene. For å få tilgang til elementene, kan vi bruke følgende kode for loopen:

til Jeg i sorterte_verdier:

trykk (i [0], i [1])

Her, Indeks 0 av listen representerer ordbokens nøkkel, mens Indeks 1 representerer verdien.

Den forrige koden skal returnere som vist nedenfor:

PostgreSql 20000
Redis 5000
MySQL 1000
MongoDB 250
SQLite 100

Sorter funksjon med itemgetter

Python -operatørmodulen gir oss itemGetter () funksjon og lar oss få et kallbart objekt som henter et element fra den spesifiserte operanden.

Enkelt sagt, itemGetter (N) Funksjonen vil lage et kallbart objekt og henter det nth elementet (indeks).

For eksempel:

operatør.itemGetter (3) ('ABCDEFG')

Funksjonen over vil hente varen i den tredje indeksen fra den medfølgende strengen. Funksjonen fungerer med ethvert iterable objekt som lister, tuples, ordbøker osv.

Vi kan kombinere itemGetter () Funksjon for å sortere verdiene i en ordbok, som vist i følgende eksempel:

Fra operatørimport itemetetter
TUP = sortert (DB.elementer (), nøkkel = itemGetter (1))
sorted_values ​​= nøkkel: verdi for nøkkel, verdi i TUP
print (sorted_values)

Vi starter med å importere ItemGetter -funksjonen fra operatørmodulen i forrige kode.

Deretter bruker vi db.varer () Funksjon for å få nøkkelverdiparene som en liste over tuples. For å hente bare verdiene, bruker vi ItemGetter -funksjonen og passerer indeksen på 1 som parameter.

Dette skal returnere ordens verdier.

Når vi har sortert listen, kan vi iterere over den og lage en ny ordbok fra de sorterte verdiene.

Dette skal returnere en sortert ordbok som vist i følgende:

'Sqlite': 100, 'Mongodb': 250, 'MySql': 1000, 'Redis': 5000, 'PostgreSql': 20000

Merk at ordren i dette er i stigende rekkefølge.

Konklusjon

Denne artikkelen viser metodene for å sortere en ordbok etter verdier. Bruker sortert () Funksjon, kan du stille den omvendte parameteren til "False" for å sortere ordboken i stigende rekkefølge.