Dictionaries

Strukturera data i nyckel-värdes-par med Pythons dictionaries.

Ca 60 min · del av Programmering i Python

Begrepp i lektionen

  • dictionary
  • nyckel
  • värde
  • keys()
  • values()
  • items()

Efter denna lektion kommer du att kunna skapa, manipulera och iterera över Pythons dictionaries för att strukturera data i effekteriva nyckel-värdes-par.

Introduktion till Dictionaries och Nyckel-Värdes-Par

En dictionary (eller uppslagsbok/associativ array) är en av Pythons mest kraftfulla och använda inbyggda datastrukturer. Till skillnad från en lista, där element nås med hjälp av ett numeriskt index (0, 1, 2...), använder en dictionary så kallade nyckel-värdes-par (key-value pairs).

Varje element i en dictionary består av två delar:

1. Nyckel (Key): En unik identifierare som fungerar som adressen till datan. Nycklar måste vara av en oföränderlig (immutable) datatyp, såsom strängar, heltal eller tupler.

2. Värde (Value): Den data som är kopplad till nyckeln. Värdet kan vara av vilken datatyp som helst – heltal, strängar, listor eller till och med andra dictionaries.

Syntaxen för att skapa en dictionary använder måsvingar `{}` där nyckel och värde separeras med ett kolon `:`, och paren separeras med kommatecken:

python

student = {

'namn': 'Anna',

'ålder': 22,

'program': 'Datateknik'

}

För att komma åt ett värde använder du nyckeln inom hakparenteser:

python

print(student['namn']) # Skriver ut: Anna

Om du försöker komma åt en nyckel som inte finns uppstår ett `KeyError`. För att undvika detta kan du använda metoden `.get()`, till exempel `student.get('skola', 'Ej angiven')`, som returnerar ett standardvärde om nyckeln saknas istället för att krascha programmet.

Lägga till, ändra och ta bort element

Att arbeta med dictionaries innebär ofta att dynamiskt lägga till nya nyckel-värdes-par, ändra befintliga värden eller ta bort data när den inte längre behövs.

1. Lägga till och uppdatera värden

Syntaxen för att lägga till ett nytt par eller ändra ett befintligt är identisk i Python. Om nyckeln redan finns skrivs det gamla värdet över. Om nyckeln saknas skapas ett nytt par automatisk.

python

lager = {'äpplen': 10, 'bananer': 5}

lager['bananer'] = 12 # Ändrar befintligt värde från 5 till 12

lager['päron'] = 8 # Lägger till den nya nyckeln 'päron'

2. Ta bort element

Det finns två vanliga sätt att ta bort element från en dictionary:

  • Nyckelordet `del`: Tar bort paret helt ur dictionaryn.

python

del lager['äpplen']

  • Metoden `.pop(nyckel)`: Tar bort paret och returnerar samtidigt värdet. Det är användbart om du vill använda värdet direkt vid borttagning.

python

antal = lager.pop('bananer') # antal blir 12, 'bananer' tas bort

3. Kontrollera om en nyckel finns

För att undvika fel när du slår upp nycklar kan du använda operatorn `in`:

python

if 'päron' in lager:

print('Päron finns i lagret!')

Metoderna keys(), values() och items()

När du vill gå igenom (iterera over) innehållet i en dictionary tillhandahåller Python tre centrala metoder: `.keys()`, `.values()` och `.items()`.

1. `keys()`

Returnerar alla nycklar i dictionaryn. Om du loopar direkt över en dictionary itererar Python automatiskt över nycklarna:

python

priser = {'kaffe': 35, 'bulle': 25}

for produkt in priser.keys(): # Ekvivalent med: for produkt in priser:

print(produkt)

2. `values()`

Returnerar alla värden, utan nycklarna. Detta är perfekt för beräkningar på datan:

python

total = sum(priser.values())

print(total) # Skriver ut 60

3. `items()`

Returnerar både nyckel och värde som tupler i varje steg av loopen. Det här är det mest idiomatiska och använda sättet i Python att gå igenom hela dictionaryn:

python

for produkt, pris in priser.items():

print(produkt, 'kostar', pris, 'kr')

I loopen ovan packar Python upp variabelparet `(nyckel, värde)` direkt till variablerna `produkt` och `pris`.

Nestlade Dictionaries och Praktiska Användningsområden

Värdet i en dictionary kan vara av vilken datatyp som helst – inklusive en annan dictionary! Detta kallas för nestlade dictionaries (nästlade uppslagsverk) och är ytterst vanligt när man arbetar med strukturerad data som t.ex. API-svar eller JSON-filer.

Exempel på nestlad struktur:

python

användare = {

'user101': {

'namn': 'Erik',

'epost': 'erik@example.com',

'roller': ['admin', 'utvecklare']

},

'user102': {

'namn': 'Sara',

'epost': 'sara@example.com',

'roller': ['användare']

}

}

För att komma åt data i flera nivåer kedjar du hakparenteserna:

python

print(användare['user101']['namn']) # Skriver ut: Erik

print(användare['user101']['roller'][0]) # Skriver ut: admin

När används dictionaries i verkligheten?

  • Användar- och objektprofiler: Lagra attribut för t.ex. en användare, en bil eller en produkt.
  • Blixtsnabb uppslagning (Lookups): Söka efter data baserat på unika ID-nummer (t.ex. personnummer eller produktkoder).
  • Frekvensräkning: Räkna hur många gånger ett ord eller ett element förekommer i en text eller datamängd.
  • Konfigurationer: Spara inställningar för en applikation i form av nyckel-värdes-par.

Hela kursen