I denne opplæringen lærer du hvordan du sorterer en Python-ordbok etter nøkkel eller verdi.
Når du arbeider med en ordbok i Python, er det tider når du må sortere innholdet – etter nøkkel eller verdi. Ettersom en Python-ordbok er en nøkkelverdi-kartlegging, vil du opprette en ny ordbok som har nøklene eller verdiene sortert etter behov.
I denne opplæringen starter vi med å gjennomgå det grunnleggende om Python-ordboken. Vi lærer deretter å lage en ny ordbok der innholdet er sortert etter nøkkel eller verdi, etter behov.
Innholdsfortegnelse
Python Dictionary Basics, Revisited
Hva er en Python-ordbok?
Ordbok er en innebygd datastruktur i Python. Den lagrer varer som nøkkelverdi-par. Du kan bruke tastene til å slå opp de tilsvarende verdiene. Siden nøklene identifiserer verdiene unikt, bør det ikke være repetisjon av nøkler.
py_dict = {"Python":"cool!","Learn":True} py_dict["Python"] # Output: cool! py_dict["Learn"] # Output: True
Funksjonelt ligner en ordbok på et hash-kart. Derfor er det ikke nødvendigvis en ordnet datastruktur. Du kan få tilgang til innholdet i en ordbok i hvilken som helst vilkårlig rekkefølge, så lenge du kjenner nøklene.
Bestilling av varer i en ordbok
I tidligere versjoner av Python måtte du bruke en BestiltDict for å bevare nøklenes rekkefølge. Fra Python 3.7 kan du imidlertid få tilgang til elementene i samme rekkefølge som du legger dem til i ordboken.
Nå som du har lært det grunnleggende om Python-ordbøker, la oss lære hvordan du lager sorterte kopier av ordboken.
⚙️ Merk: Du må ha Python 3.7 eller nyere for at koden i denne opplæringen skal fungere som forventet. Du kan laste ned siste versjon av Pythoneller kjør eksemplene i tipsbilk.net Online Python Editor.
Hvordan sortere en Python-ordbok etter nøkkel
Se på følgende bilde av dessertmenyen på en kafé. Det er to kolonner som tilsvarer elementene på menyen og deres respektive priser.
Du kan representere dette i form av en Python-ordbok ved å samle inn navnene på elementer som nøkler og prisene deres som verdier.
La oss gå videre og lage ordbokdessertene, som vist nedenfor.
desserts = { "Ice cream":10, "Brownies":12, "Cheesecake":3, "Swiss roll":5, "Cookies":4, "Cup cake":2 }
La oss deretter lage en ordbok sortert_desserter, der dessertene er ordnet i alfabetisk rekkefølge. I den originale dessertordboken er navnene på dessertene nøklene. Så du bør sortere disse nøklene i alfabetisk rekkefølge for å lage en ny ordbok.
Hvordan få tilgang til nøklene til en Python-ordbok
For å gjøre dette får vi først nøklene til ordboken og sorterer dem deretter i alfabetisk rekkefølge.
I Python kan du bruke den innebygde ordbokmetoden .keys() for å få en liste over alle nøklene i ordboken.
La oss kalle .keys()-metoden i dessertordboken for å hente nøklene, som vist nedenfor.
keys = desserts.keys() print(keys) #Output ['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 'Cup cake']
Å kalle Pythons innebygde sorted() funksjon med en liste som argument returnerer en ny sortert liste.
La oss deretter kalle sorted()-funksjonen med listetastene som argument og lagre den sorterte listen i variabelen sorted_keys.
sorted_keys = sorted(keys) print(sorted_keys) # Output ['Brownies', 'Cheesecake', 'Cookies', 'Cup cake', 'Ice cream', 'Swiss roll']
Nå som vi har nøklene sortert i alfabetisk rekkefølge, kan vi slå opp verdiene som tilsvarer nøklene i sorted_keys fra dessertordboken, som vist nedenfor.
sorted_desserts = {} for key in sorted_keys: sorted_desserts[key] = desserts[key] print(sorted_desserts) # Output {'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2, 'Ice cream': 10, 'Swiss roll': 5}
La oss utvide på kodeblokken ovenfor:
- Initialiser sorted_desserts til å være en tom Python-ordbok.
- Gå gjennom tastelisten sorted_keys.
- For hver nøkkel i sorted_keys, legg til en oppføring i sorted_desserts ved å slå opp den tilsvarende verdien i dessertordboken.
Å bruke for-løkken som dette betraktes som ordrik. I Python er det et mer kortfattet alternativ ved å bruke ordbokforståelse.
Ordbokforståelse i Python
Python støtter bruken av ordbokforståelse, lik listeforståelse. Ordbokforståelse lar deg lage en ny Python-ordbok med bare én kodelinje.
▶️ Her er den generelle konstruksjonen for å bruke ordbokforståelse i Python.
# 1. when you have both keys and values in two lists: list1, list2 new_dict = {key:value for key,value in zip(list1,list2)} # 2. when you have the keys, and can look up the values new_dict = {key:value for key in <iterable>}
La oss bruke den andre konstruksjonen i cellen ovenfor: new_dict = {key:value for key in
I dette eksemplet:
- iterable: listen sorted_keys
- key: nøkkelen som vi får tilgang til ved å gå gjennom sorted_keys
- verdi: slå opp verdien som tilsvarer nøkkelen fra dessertordboken, desserter[key]
Setter vi det hele sammen, har vi uttrykket for ordbokforståelse, som vist nedenfor.
sorted_desserts = {key:desserts[key] for key in sorted_keys} print(sorted_desserts) {'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2, 'Ice cream': 10, 'Swiss roll': 5}
Fra utgangen ovenfor er dessertene ordnet i alfabetisk rekkefølge i sortert_dessert-ordboken.
Hvordan sortere en Python-ordbok etter verdi
Deretter lærer vi hvordan du sorterer en Python-ordbok etter verdiene.
I dessertordboken tilsvarer verdiene prisene på dessertene. Det kan være lurt å sortere ordboken etter priser, enten i økende eller synkende rekkefølge.
▶️ Du kan bruke den innebygde ordbokmetoden .items() for å få alle nøkkelverdi-parene. Hver tuppel er et nøkkelverdi-par.
desserts.items() dict_items([('Ice cream', 10), ('Brownies', 12), ('Cheesecake', 3), ('Swiss roll', 5), ('Cookies', 4), ('Cup cake', 2)])
Hver av gjenstandene er en tuppel i seg selv. Så du kan også indeksere inn i hvert nøkkelverdi-par for å få tilgang til nøklene og verdiene individuelt.
dict_items = desserts.items() for item in dict_items: print(f"key:{item[0]},value:{item[1]}") # Output key:Ice cream,value:10 key:Brownies,value:12 key:Cheesecake,value:3 key:Swiss roll,value:5 key:Cookies,value:4 key:Cup cake,value:2
Siden vi ønsker å sortere etter verdier, bruker vi metoden ovenfor for å få verdien ved indeks 1 i nøkkelverdi-paret.
Hvordan sortere verdiene til en Python-ordbok i økende rekkefølge
Denne gangen bruker vi sortert()-funksjonen sammen med den valgfrie nøkkelparameteren. nøkkel kan være en hvilken som helst Python-funksjon, en innebygd funksjon, en brukerdefinert funksjon eller til og med en lambda funksjon.
Merk: lambda args: uttrykk er syntaksen for å definere lambda-funksjoner i Python.
I dette eksemplet med sortering av desserter etter pris, har vi tilgang til ordbokartikler (nøkkelverdi-par). Vi setter nøkkel = lambda element:vare[1] som vi ønsker å sortere etter verdi (pris).
Siden sorted()-funksjonen returnerer en liste som standard, bør du eksplisitt caste den til en dict, som vist nedenfor.
sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1])) print(sorted_desserts) {'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5, 'Ice cream': 10, 'Brownies': 12}
Du kan også skrive om ved å bruke ordbokforståelsesom diskutert tidligere.
sorted_desserts = {key:value for key, value in sorted(desserts.items(), key=lambda item:item[1])} print(sorted_desserts) # Output {'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5, 'Ice cream': 10, 'Brownies': 12}
I sorted_desserts er Cup Cake priset til $2 den første varen og Brownies priset til $12 er den siste varen.
Hvordan sortere verdiene til en Python-ordbok i synkende rekkefølge
Hvis du vil sortere prisene i synkende rekkefølge, kan du sette den valgfrie reversparameteren til True, som forklart nedenfor.
sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1], reverse=True)) print(sorted_desserts) # Output {'Brownies': 12, 'Ice cream': 10, 'Swiss roll': 5, 'Cookies': 4, 'Cheesecake': 3, 'Cup cake': 2}
Nå har sorted_desserts blitt sortert i synkende rekkefølge av priser, og starter med den dyreste desserten Brownies som koster $12.
Avslutning 👩🏽💻
La oss raskt oppsummere alt vi har lært i denne opplæringen.
- En Python-ordbok lagrer data i nøkkelverdi-par; nøklene skal alle være unike.
- I prosessen med å sortere en ordbok etter nøkkel eller verdi, lager vi en ny ordbok som sorteres etter behov.
- Du kan bruke de innebygde ordbokmetodene, .keys() og .items() for å hente henholdsvis alle nøkler og nøkkelverdi-par.
- Du kan bruke sortert()-funksjonen sammen med den valgfrie parametertasten og reversere for å oppnå ønsket sortering.
Nå som du har lært hvordan du sorterer en Python-ordbok, lær deg å sortere Python-lister. Lykke til med koding!🎉