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
- Variabler, datatyper och I/O
- Operatorer och logiska uttryck
- Villkorssatser
- Slingor och iteration
- Listor och sekvenser
- Tupler och mängder
- Dictionaries
- Iteration och list comprehension
- Funktionsdefinitioner och parametrar
- Variablers räckvidd (Scope)
- Moduler och Pythons standardbibliotek
- Läsa och skriva filer
- Felhantering och undantag
- Text- och databearbetning