Kap 2.4
Dictionaries och tuples
Vi väljer datastruktur efter hur värdena ska användas.
Mål
Efter lektionen ska du kunna...
- förklara vad en dictionary är
- använda nyckel-värde-par
- förklara vad en tuple är
- välja mellan lista, dictionary och tuple
Frågan
Hur hör värdena ihop?
Listor passar när ordningen är viktig.
Dictionaries passar när värden behöver namn.
Tuples passar när en grupp värden ska vara fast.
Dictionary
Nyckel och värde
person = {
"name": "Anna",
"age": 25,
"city": "Stockholm"
}
"name", "age" och "city" är nycklar.
Åtkomst
Hämta värde med nyckel
print(person["name"])
Python hämtar värdet som hör till nyckeln "name".
Anna
Säkrare åtkomst
get() undviker KeyError
print(person.get("email", "Ingen e-post finns"))
Om nyckeln saknas används standardvärdet.
Det är användbart när du inte vet om nyckeln finns.
Ändra
Ändra eller lägg till
person["age"] = 26
Nyckeln finns redan, så värdet ändras.
person["email"] = "alice@example.com"
Nyckeln saknas, så den läggs till.
Ta bort
del tar bort en nyckel
del person["city"]
Nyckeln "city" och dess värde tas bort.
Iteration
Loopa genom dictionaryn
for key, value in person.items():
print(f"{key}: {value}")
name: Anna
age: 26
email: alice@example.com
Varje varv skriver ut en nyckel och dess värde.
Realistiskt
Flera dictionaries i en lista
books = [
{"title": "Python", "year": 2024},
{"title": "Webbutveckling", "year": 2023}
]
for book in books:
print(book["title"])
Python
Webbutveckling
Loopen hämtar nyckeln "title" från varje dictionary.
Tuple
Fast, ordnad samling
coordinates = (10, 20)
print(coordinates[0]) # 10
En tuple har ordning, men kan inte ändras efter att den skapats.
Immutable
Oföränderlig struktur
coordinates[0] = 99
Det fungerar inte.
Du kan läsa från en tuple, men inte byta ut positioner.
Uppackning
Dela upp värden i variabler
coordinates = (10, 20)
x, y = coordinates
print(x) # 10
print(y) # 20
Antalet variabler måste matcha antalet värden.
Funktioner
Returnera flera värden
def get_user():
return ("Anna", 25)
name, age = get_user()
Funktionen returnerar en tuple som packas upp direkt.
Jämförelse
Lista, dictionary, tuple
- lista: ordnad och ändringsbar
- dictionary: nyckel-värde-par
- tuple: ordnad och oföränderlig
Välj rätt
När passar vad?
- lista: flera värden i en ordning
- dictionary: persondata, inställningar, poängtabeller
- tuple: koordinater eller fasta returvärden
Öva själv
Fyra uppgifter
- Skapa en dictionary för en bok.
- Skriv en funktion som returnerar en tuple med namn och ålder.
- Skapa en meny för användarnamn och poäng.
- Skriv ut alla nycklar och värden med en for-loop.
Reflektion
Fundera
- När passar dictionary bättre än lista?
- Hur påverkar det att en tuple inte kan ändras?
- Vilken struktur passar bäst i ett menybaserat program?
Sammanfattning
Kom ihåg
- Dictionaries kopplar nycklar till värden.
get()kan ge standardvärde om nyckeln saknas.items()ger nyckel och värde i en loop.- Tuples är ordnade men oföränderliga.
- Tuple-uppackning delar värden i variabler.