Slik bruker du dictionaries i Python

Lær dictionaries i Python. Nøkkel-verdi-par, opprette, hente, legge til og slette data.

Videoforhåndsvisning

Opprett konto for å se video

Det er helt gratis og tar under 30 sekunder

Opprett gratis kontoHar du konto? Logg inn

Du bygger et program som lagrer informasjon om en bruker: navn, alder, e-post og by. Du kan bruke fire separate variabler, men da mister du koblingen mellom dem. Du kan bruke en liste, men da må du huske at indeks 0 er navn, indeks 1 er alder, og så videre. En dictionary i Python løser dette elegant. Du lagrer data med beskrivende nøkler i stedet for numeriske indekser, og koden blir lesbar av seg selv.

Slik oppretter du en dictionary i Python

En dictionary lager du med krøllparenteser. Hvert element består av en nøkkel og en verdi, separert med kolon:

bil = {"brand": "Tesla", "modell": "Model S", "aar": 2020}

Du kan også lage en tom dictionary og fylle den etterpå:

tom = {}
tom_2 = dict()

En tredje variant er å bruke dict() med nøkkelordargumenter: dict(brand="Tesla", modell="Model S", aar=2020). Her slipper du å sette nøklene i anførselstegn, men nøklene kan bare være gyldige variabelnavn (ingen mellomrom, spesialtegn eller tall først). Nøklene i en dictionary må være av en uforanderlig type, som strenger, tall eller tuples. Lister kan ikke brukes som nøkler.

Hente ut verdier

Du henter en verdi ved å oppgi nøkkelen i firkantparenteser:

bil["brand"] gir "Tesla"
bil["aar"] gir 2020

Hvis du prøver å hente en nøkkel som ikke finnes, krasjer programmet med KeyError. Det unngår du med .get()-metoden:

bil.get("farge") gir None (i stedet for feil)
bil.get("farge", "ukjent") gir "ukjent"

Med get() kan du oppgi en standardverdi som returneres hvis nøkkelen mangler. Bruk get() som standard når du ikke er sikker på at nøkkelen finnes. Bruk firkantparenteser når du vet at den finnes og vil ha en tydelig feil hvis den ikke gjør det. I praksis bruker du get() mest når du håndterer data fra eksterne kilder (API-er, brukereinnput, filer), der du ikke kan garantere at alle nøkler er til stede.

Legge til og endre verdier

Du legger til nye nøkler og endrer eksisterende verdier med samme syntaks:

bil["farge"] = "rød" legger til nøkkelen "farge"
bil["aar"] = 2021 endrer verdien til 2021

Finnes nøkkelen fra før, overskrives verdien. Finnes den ikke, opprettes den. Denne dobbeltfunksjonen gjør dictionaries fleksible, men pass på: du får ingen advarsel hvis du ved et uhell overskriver en eksisterende nøkkel med feil verdi. Vil du oppdatere flere nøkler samtidig, bruk bil.update({"farge": "rød", "aar": 2022}). Den overskriver eksisterende nøkler og legger til nye i én operasjon.

For å fjerne en nøkkel bruker du del:

del bil["farge"]

Prøver du å slette en nøkkel som ikke finnes, får du KeyError. Sjekk med in først: if "farge" in bil:. Du kan også bruke pop()-metoden for en tryggere fjerning: bil.pop("farge", None) fjerner nøkkelen hvis den finnes, og returnerer None hvis den ikke gjør det.

Iterere over en dictionary

En for-løkke over en dictionary gir deg nøklene som standard:

for nokkel in bil:
    print(nokkel)

For å hente verdien bruker du nøkkelen til å slå opp: bil[nokkel]. Men det finnes en mer direkte metode. Med .items() får du nøkkel og verdi samtidig:

for nokkel, verdi in bil.items():
    print(f"{nokkel}: {verdi}")

Trenger du bare verdiene, bruk .values(). Trenger du bare nøklene (eksplisitt), bruk .keys(). Metoden items() er den du bruker oftest fordi du nesten alltid trenger begge deler. Merk at keys(), values() og items() returnerer visninger som oppdateres automatisk hvis du endrer dictionaryen etterpå.

Sjekke om en nøkkel finnes

in-operatoren sjekker nøkler, ikke verdier:

"modell" in bil gir True
"Model S" in bil gir False (dette er en verdi, ikke en nøkkel)

Denne forskjellen er viktig og en vanlig kilde til feil. Vil du sjekke om en verdi finnes, må du bruke "Model S" in bil.values(). For lengden bruker du len(bil), som returnerer antall nøkkel-verdi-par i dictionaryen.

Dictionaries vs. lister

Bruk en liste når rekkefølgen betyr noe og elementene er av samme type (en liste med navn, en liste med priser). Bruk en dictionary når du trenger å slå opp verdier basert på en nøkkel (brukerinformasjon, produktdetaljer, innstillinger).

I praksis kombinerer du dem ofte. En liste med dictionaries er en vanlig struktur for å representere flere poster av samme type:

brukere = [{"navn": "Petter", "alder": 18}, {"navn": "Kari", "alder": 22}]

Denne kombinasjonen av lister og dictionaries er grunnstrukturen for mye av datahåndteringen du gjør i Python. Når du henter data fra en database, et API eller en JSON-fil, får du nesten alltid data i dette formatet. Å mestre dictionaries gjør deg klar for virkelige programmeringsoppgaver.

Neste steg

Vil du utforske en annen type samling der verdiene er låst etter opprettelse, les om tuples. For å forstå funksjoner i Python, som ofte bruker dictionaries for å ta imot fleksible argumenter, er det naturlige neste steget. Pythons offisielle dokumentasjon har en grundig gjennomgang av dictionaries med avanserte mønstre.

Denne videoen er hentet fra kurset Python for nybegynnere på Utdannet.no. I det fulle kurset jobber du med dictionaries i Python gjennom oppgaver, lærer å kombinere dem med løkker og betingelser, og bygger programmer som organiserer og behandler strukturert data.