Programmering nivå 2
Kap 2.4 – Dictionaries och tuples
Välj rätt datastruktur när värden behöver namn, ordning eller skydd mot ändring.
Mål med lektionen
När du har arbetat klart med denna lektion ska du:
- Förstå vad en dictionary och en tuple är.
- Kunna skapa och använda dictionaries för att lagra nyckel-värde-par.
- Förstå tuples som fasta, ordnade samlingar av data.
- Veta när du bör använda dessa strukturer i stället för listor.
Så här lär du dig bäst
Testa varje struktur med olika datatyper och i kombination med loopar och funktioner. Jämför hur det känns att använda listor, dictionaries och tuples i olika situationer. Reflektera över varför vissa datastrukturer är mer lämpliga än andra beroende på sammanhang.
Vad är en dictionary?
En dictionary i Python är en samling av nyckel-värde-par, där varje nyckel är unik. Den används när du vill koppla ett värde till ett specifikt namn eller en identitet.
person = {
"name": "Anna",
"age": 25,
"city": "Stockholm"
}
Åtkomst
print(person["name"]) # Anna
Om du försöker hämta en nyckel som inte finns får du KeyError. När du är osäker kan du
använda get() och ange ett standardvärde:
print(person.get("email", "Ingen e-post finns"))
Ändra eller lägga till
person["age"] = 26
person["email"] = "alice@example.com"
Ta bort
del person["city"]
Loopa genom en dictionary
for key, value in person.items():
print(f"{key}: {value}")
Realistiskt exempel: flera dictionaries i en lista
Ofta använder du dictionaries för objektliknande data och lägger flera sådana dictionaries i en lista.
books = [
{"title": "Python", "year": 2024},
{"title": "Webbutveckling", "year": 2023}
]
for book in books:
print(book["title"])
Interaktiv övning: dictionary steg för steg
Testa att hämta, ändra, lägga till, ta bort och loopa genom en dictionary. Kör ett val i taget och se hur innehållet förändras.
Prova till exempel att:
- hämta nyckeln
name - ändra
agetill26 - lägga till nyckeln
email - ta bort
city - loopa genom hela dictionaryn med
items()
Programmering 2-koppling: dictionaries passar när varje värde behöver en tydlig nyckel, till exempel persondata, inställningar eller poängtabeller.
Vad är en tuple?
En tuple är en ordnad, oföränderlig samling. Den används när du inte vill att värden ska kunna ändras.
Oföränderlig betyder att du inte kan byta ut, lägga till eller ta bort positioner i tuplen. Om en tuple innehåller ett ändringsbart objekt, till exempel en lista, kan själva listan fortfarande ändras. Det viktiga här är att tuple-strukturen är fast.
coordinates = (10, 20)
print(coordinates[0]) # 10
Tuple-uppackning
Tuple-uppackning betyder att du tar värdena från en tuple och lägger dem i separata variabler på en gång. Antalet variabler måste matcha antalet värden i tuplen.
coordinates = (10, 20)
x, y = coordinates
print(x) # 10
print(y) # 20
Det här är samma idé som när en funktion returnerar flera värden:
def get_user():
return ("Anna", 25)
name, age = get_user()
print(name) # Anna
print(age) # 25
Interaktiv övning: tuple
Testa att läsa värden från en tuple och jämför med vad som händer om du försöker ändra den. Tuples är ordnade, men oföränderliga.
Prova till exempel att:
- läsa index
0och få första värdet - läsa index
1och få andra värdet - packa upp tuplen med
x, y = coordinates - försöka ändra index
0och se felmeddelandet
Programmering 2-koppling: tuples passar när värden hör ihop och inte ska ändras, till exempel koordinater eller fasta inställningar.
Tuples används ofta för att returnera flera värden från en funktion. Då kan mottagaren packa upp värdena direkt i tydliga variabler:
def get_user():
return ("Anna", 25)
name, age = get_user()
print(name)
print(age)
Skillnad mot listor
- Listor: ändringsbara, alltså mutable.
- Tuples: fasta, alltså immutable.
Använd en tuple när värdena hör ihop och inte ska bytas ut, till exempel en koordinat
(x, y). Använd en dictionary när varje värde behöver ett tydligt namn, till exempel
{"name": "Anna", "age": 25}.
Jämförelse: när används vad?
| Struktur | Egenskaper | Använd när du vill... |
|---|---|---|
| List | Ordnad, ändringsbar | Lagra flera värden i en ordning |
| Dictionary | Nyckel-värde-par | Knyta namn eller etikett till varje värde |
| Tuple | Ordnad, oföränderlig | Lagra en fast uppsättning värden |
Öva själv
- Skapa en dictionary för en bok med nycklarna
title,authorochyear. - Skriv en funktion som returnerar en tuple med ett namn och en ålder.
- Skapa en meny som låter användaren lägga till poster i en dictionary, till exempel användarnamn och poäng.
- Skriv ut alla nycklar och värden i en dictionary med hjälp av en for-loop.
När du har försökt själv kan du ladda ner ett lösningsförslag: kap2-4-dictionaries-tuples-losningsforslag.py
Reflektion
- När känns det bäst att använda en dictionary istället för en lista?
- Hur påverkar det programlogiken att en tuple inte kan ändras?
- Vilken struktur tycker du är mest användbar i ett menybaserat program?