Ønsker du å dykke dypere inn i Python-ordbøker? Denne guiden vil lede deg gjennom ulike metoder for å lese, modifisere og utføre andre vanlige operasjoner med Python-ordbøker.
Vi starter med å se på grunnleggende om Python-ordbøker, deretter vil vi konstruere et eksempel og manipulere det ved hjelp av de forskjellige metoder.
La oss begynne…
En introduksjon til Python-ordbøker
Ordbøker er en innebygd datastruktur i Python. De gir deg muligheten til å lagre data i nøkkel-verdi par – og etablere en forbindelse eller relasjon mellom unike nøkler og deres tilhørende verdier.
Nøklene i en ordbok må være unike (og hasjbare). Du bruker nøkkelen til å raskt finne verdien eller å bruke integrerte metoder for å manipulere ordboken (du lærer om disse snart).
Når du lager en Python-ordbok, kan du enten fylle den med nøkkel-verdi par ved opprettelse, eller starte med en tom ordbok og legge til elementer etter behov.
>>> dict1 = {'språk':'Python','liker':True} >>> type(dict1) <class 'dict'> # eller vi kan gjøre følgende: >>> dict1 = {} >>> dict1['språk']='Python' >>> dict1['liker']=True
Python-ordbokmetoder for vanlige operasjoner
Viktig: For å kjøre kodeeksemplene, må du ha Python 3.7 eller nyere installert.
Du kan skrive kode i en Python REPL. Alternativt kan du benytte tipsbilk.nets online Python-editor.
>>> person = {'navn':'Alice', ... 'by':'Portland', ... 'interesse':'Programmering', ... 'yrke':'Utvikler' ... }
Nå som vi har initialisert en Python-ordbok, la oss gå gjennom de forskjellige ordbokmetodene.
Hent ordboknøklene med keys()
En vanlig operasjon når du jobber med Python-ordbøker er å hente ut alle nøklene, verdiene eller nøkkel-verdi parene. For å få tak i nøklene til en ordbok, bruker du keys()-metoden, som vist:
>>> person.keys() dict_keys(['navn', 'by', 'interesse', 'yrke'])
Hent ordbokverdiene med values()
Metoden values() returnerer alle verdiene. Denne er praktisk når du trenger å prosessere verdiene videre.
La oss se på verdiene i person-ordboken:
>>> person.values() dict_values(['Alice', 'Portland', 'Programmering', 'Utvikler'])
Hent nøkkel-verdi par med items()
Metoden items() returnerer en liste over nøkkel-verdi tupler. Når vi kaller denne metoden på person-ordboken, får vi en liste over slike tupler:
>>> person.items() dict_items([('navn', 'Alice'), ('by', 'Portland'), ('interesse', 'Programmering'), ('yrke', 'Utvikler')])
Lag en overfladisk kopi med copy()
Metoden copy() returnerer en overfladisk kopi av en Python-ordbok.
>>> person_cpy = person.copy()
Her er person_cpy en overfladisk kopi av person-ordboken. La oss endre denne kopien ved å oppdatere «navn»-nøkkelen til «Bob».
>>> person_cpy['navn'] = 'Bob' >>> person_cpy
Nå kan du se at «navnet» har blitt oppdatert til «Bob» i kopien.
{ 'navn': 'Bob', 'by': 'Portland', 'interesse': 'Programmering', 'yrke': 'Utvikler' }
Den originale person-ordboken er derimot uendret.
>>> person
{ 'navn': 'Alice', 'by': 'Portland', 'interesse': 'Programmering', 'yrke': 'Utvikler' }
Angi standardverdier med setdefault()
Når du arbeider med Python-ordbøker, er det vanlig å oppleve et KeyError-unntak dersom en nøkkel ikke finnes i ordboken. Her er et eksempel når vi prøver å hente «alder»-nøkkelen:
>>> person['alder'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'alder'
Du kan unngå slike feil ved å bruke de integrerte metodene setdefault() og get() i stedet for å hente verdien direkte.
Metoden setdefault(key) returnerer dict[‘key’] hvis nøkkelen finnes i ordboken.
>>> person.setdefault('navn') 'Alice'
Dersom nøkkelen ikke finnes, vil den legge til nøkkelen i ordboken med en standardverdi som er None.
>>> person.setdefault('adresse') >>> person
Her er «adresse»-nøkkelen ikke i person-ordboken. Men vi ser at den er lagt til med standardverdien None.
{ 'navn': 'Alice', 'by': 'Portland', 'interesse': 'Programmering', 'yrke': 'Utvikler', 'adresse': None }
Vi kan nå sette «adresse»-nøkkelen til en konkret adresse:
>>> person['adresse'] = "10, xyz gate"
>>> person
{ 'navn': 'Alice', 'by': 'Portland', 'interesse': 'Programmering', 'yrke': 'Utvikler', 'adresse': '10, xyz gate' }
Du kan også definere verdien direkte i metodekallet, som vist her:
>>> person.setdefault('land','USA') 'USA' >>> person
Siden «land»-nøkkelen opprinnelig ikke fantes i person-ordboken, ser vi at den er lagt til med «USA» som verdi.
{ 'navn': 'Alice', 'by': 'Portland', 'interesse': 'Programmering', 'yrke': 'Utvikler', 'adresse': '10, xyz gate', 'land': 'USA' }
Hent en spesifikk verdi med get()
Metoden get() returnerer verdien som hører til nøkkelen. Den tar også en valgfri standardverdi som vil bli returnert dersom nøkkelen ikke finnes i ordboken.
Når vi prøver å få verdien av «navn»-nøkkelen, får vi «Alice», siden nøkkelen er til stede i ordboken:
>>> person.get('navn') 'Alice'
Person-ordboken har ikke en «karakter»-nøkkel. Når vi prøver å få denne, returneres ingenting i Python REPL. Men om vi printer verdien, vil vi se at det returneres None.
>>> person.get('karakter') >>> print(person.get('karakter')) None
Om vi derimot oppgir en valgfri standardverdi, vil vi få denne returnert i stedet for None.
>>> person.get('karakter','ikke funnet') 'ikke funnet'
Metoden get() vil likevel ikke legge til «karakter»-nøkkelen til ordboken.
>>> person
{ 'navn': 'Alice', 'by': 'Portland', 'interesse': 'Programmering', 'yrke': 'Utvikler', 'adresse': '10, xyz gate', 'land': 'USA' }
Forstå setdefault() vs. get()
Selv om både setdefault()- og get()-metodene kan brukes for å unngå KeyError, la oss oppsummere de viktigste forskjellene:
- dict.setdefault(key,val) legger til nøkkelen med val som standardverdi. Om val ikke er spesifisert, vil nøkkelen legges til med standardverdien None.
- dict.get(key,val) returnerer verdien tilhørende nøkkelen i ordboken. Om nøkkelen ikke finnes, returneres val (om gitt) eller None – men nøkkelen legges ikke til ordboken.
Du kan også bruke defaultdict i Python for å håndtere KeyErrors bedre.
Oppdater innholdet i ordboken med update()
Du kan oppdatere en eksisterende Python-ordbok ved å bruke nøkkel-verdi par fra en annen ordbok. Du kan også oppdatere med innhold fra en hvilken som helst Python iterable ved å bruke update()-metoden.
La oss definere en more_details-ordbok. Vi oppdaterer deretter person-ordboken med innholdet i more_details-ordboken:
>>> more_details = {'hobby':'synge', 'liker':'søtsaker'} >>> person.update(more_details)
Fra utskriften nedenfor ser vi at «hobby»- og «liker»-nøklene er lagt til i person-ordboken.
>>> person
{ 'navn': 'Alice', 'by': 'Portland', 'interesse': 'Programmering', 'yrke': 'Utvikler', 'adresse': '10, xyz gate', 'land': 'USA', 'hobby': 'synge', 'liker': 'søtsaker' }
Fjern det sist lagt til elementet med popitem()
Ordbokmetoden popitem() kan brukes til å fjerne det sist lagt til nøkkel-verdi paret.
>>> person.popitem() ('liker', 'søtsaker')
Som vi ser, vil popitem()-metoden i person-ordboken returnere («liker», «søtsaker») nøkkel-verdi paret – det sist lagt til elementet i ordboken.
Metoden fjerner også dette nøkkel-verdi paret. Du kan bekrefte dette ved å undersøke innholdet i ordboken:
>>> person
{ 'navn': 'Alice', 'by': 'Portland', 'interesse': 'Programmering', 'yrke': 'Utvikler', 'adresse': '10, xyz gate', 'land': 'USA', 'hobby': 'synge' }
Fjern et ordbokelement med pop()
Vi vet at popitem()-metoden fjerner og returnerer det siste nøkkel-verdi paret i en Python-ordbok. Men noen ganger må vi fjerne andre elementer, ikke bare det sist lagt til.
For å gjøre dette kan vi bruke Python-ordbokmetoden pop(): Ved å bruke .pop(key) på ordboken returnerer vi verdien som tilsvarer nøkkelen, samtidig som nøkkel-verdi paret fjernes fra ordboken.
Her er et eksempel:
>>> person.pop('hobby') 'synge'
Siden vi har fjernet elementet tilhørende nøkkelen «hobby», vil vi se at det ikke lenger finnes i ordboken.
>>> person
{ 'navn': 'Alice', 'by': 'Portland', 'interesse': 'Programmering', 'yrke': 'Utvikler', 'adresse': '10, xyz gate', 'land': 'USA' }
Om vi sender inn en nøkkel som ikke eksisterer, vil vi få et KeyError-unntak, som vist her:
>>> person.pop('alder') Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'alder'
Her ser vi et KeyError-unntak, fordi «alder»-nøkkelen ikke finnes i person-ordboken.
I motsetning til listen sin pop() metode, som fjerner det siste elementet som standard, krever ordbokens pop() metode en nøkkel. Om du ikke spesifiserer en nøkkel, vil vi få en feil.
>>> person.pop() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: pop expected at least 1 argument, got 0
Slett alle elementer i ordboken med clear()
Metodene pop() og popitem() fjerner ett nøkkel-verdi par om gangen. Om du vil slette alle elementene i en ordbok, kan du bruke clear()-metoden.
>>> person.clear() >>> person {}
Som vi ser, fjernes alle nøkkel-verdi parene ved å kalle clear()-metoden på person-ordboken, og ordboken er nå tom.
Oppsummering av Python-ordbokmetoder
Her er en rask gjennomgang av Python-ordbokmetodene vi har lært om:
Metode | Syntax | Beskrivelse |
keys() | dict1.keys() | Returnerer nøklene til dict1 |
values() | dict1.values() | Returnerer verdiene til dict1 |
items() | dict1.items() | Returnerer en liste over alle nøkkel-verdi par i dict1 |
copy() | dict1.copy() | Returnerer en overfladisk kopi av dict1 |
setdefault() | dict1.setdefault(key, default_value) | – Legger til nøkkel med den valgfrie default_value som nøkkel til dict1 (når ikke spesifisert, er standardverdien None) – Returnerer dict1[key] om nøkkelen allerede finnes |
get() | dict1.get(key,default_value) | – Returnerer dict1[key] om nøkkelen finnes i dict1; Ellers returneres standard_verdien – Om nøkkelen ikke finnes i dict1 og default_value ikke er spesifisert, returneres None |
update() | dict1.update(iterable1) | Oppdaterer dict1 med nøkkel-verdi par fra iterable1 |
popitem() | dict1.popitem() | Fjerner og returnerer det siste nøkkel-verdi paret fra dict1 |
pop() | dict1.pop(key) | – Fjerner og returnerer verdien som tilsvarer nøkkelen: dict1[key] – Gir en KeyError dersom nøkkelen ikke finnes i dict1 |
clear() | dict1.clear() | Sletter alle elementer fra dict1 |
Konklusjon
Du har nå lært hvordan du bruker vanlige metoder for å utføre lese-, oppdaterings- og sletteoperasjoner på Python-ordbøker. I tillegg har du også lært hvordan metodene get() og setdefault() kan brukes for å håndtere KeyError-unntak ved å returnere en standardverdi, og legge til en oppføring med en standardverdi til Python-ordboken. Du kan også sortere en Python-ordbok etter nøkkel eller verdi.
Neste steg er å sjekke ut en liste over nyttige Python-listemetoder. Lykke til med kodingen!