Mester Python-ordbøker: 10 nyttige metoder!

Ø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!