Dictionaries
Een lijst slaat waardes op een nummer op. In deze les leer je een dictionary: waardes opslaan op een sleutel (een naam) in plaats van een nummer.
Denk aan een woordenboek: je zoekt een woord op (de sleutel) en krijgt de betekenis (de waarde). Of een telefoonboek: je zoekt een naam en krijgt een nummer.
Hoe maak je een dictionary?
Tussen accolades, met sleutel-waarde-paren gescheiden door komma's:
leerling = {
"naam": "Sara",
"leeftijd": 15,
"klas": "3B"
}
print(leerling["naam"]) # Sara
print(leerling["leeftijd"]) # 15
- De sleutel staat links van de dubbele punt (
"naam"). - De waarde staat rechts (
"Sara"). - Met
dictionary[sleutel]haal je de waarde op.
Toevoegen en wijzigen
Een waarde wijzigen of een nieuwe sleutel toevoegen werkt hetzelfde:
leerling["leeftijd"] = 16 # wijzigt bestaande sleutel
leerling["hobby"] = "muziek" # voegt nieuwe sleutel toe
print(leerling)
Python kijkt of de sleutel al bestaat. Bestaat hij: waarde wordt overschreven. Bestaat hij niet: hij wordt toegevoegd.
Probeer zelf
Maak een dictionary profiel met drie sleutels: "naam", "leeftijd" en "stad". Print alleen de naam.
profiel = {
...
}
# Print alleen de naam
print(...)✅ Oplossing
profiel = {
"naam": "Alex",
"leeftijd": 15,
"stad": "Amsterdam"
}
print(profiel["naam"])
Predict
Wat print dit programma?
leerling = {
"naam": "Sara",
"leeftijd": 15,
"klas": "3B"
}
print(leerling["naam"])
leerling["leeftijd"] = 16
leerling["hobby"] = "programmeren"
print(leerling["leeftijd"])
print(leerling["hobby"])
print(len(leerling))
Bekijk het antwoord
Sara
16
programmeren
4
leerling["leeftijd"] = 16 wijzigt een bestaande waarde. leerling["hobby"] = ... voegt een nieuwe sleutel toe. De dictionary groeit van 3 naar 4 items, dus len() is nu 4.
Run
Voer de code uit en controleer.
Investigate
Wat is het verschil tussen een lijst en een dictionary?
lijst = ["Sara", 15, "3B"]
dict = {"naam": "Sara", "leeftijd": 15, "klas": "3B"}
print(lijst[0])
print(dict["naam"])
Bekijk het antwoord
Sara
Sara
Beide leveren dezelfde waarde, maar de manier waarop verschilt:
- Lijst: je moet weten dat de naam op positie
0staat. - Dictionary: je gebruikt de sleutel
"naam"— veel leesbaarder.
Een dictionary is handiger als de waardes een betekenis hebben (naam, leeftijd, klas). Een lijst is handig als alles dezelfde rol speelt (rij cijfers, lijst namen).
Er gaat iets mis
leerling = {"naam": "Sara", "leeftijd": 15}
print(leerling["school"])
Foutmelding:
KeyError: 'school'
Waarom? De sleutel "school" bestaat niet in de dictionary. Anders dan bij een lijst (IndexError) krijg je hier KeyError mét de naam van de gezochte sleutel — handig om te debuggen.
Oplossing: Check eerst of de sleutel bestaat — dat leer je in de volgende les met de in-operator.
Modify
Voeg de sleutel "woonplaats" met waarde "Amsterdam" toe aan de dictionary, en wijzig "leeftijd" in 16.
leerling = {
"naam": "Sara",
"leeftijd": 15,
"klas": "3B"
}
# Wijzig de leeftijd naar 16
...
# Voeg "woonplaats" toe
...
print(leerling)💡 Tip
leerling["leeftijd"] = 16 en leerling["woonplaats"] = "Amsterdam".
✅ Oplossing
leerling = {
"naam": "Sara",
"leeftijd": 15,
"klas": "3B"
}
leerling["leeftijd"] = 16
leerling["woonplaats"] = "Amsterdam"
print(leerling)
Make: Mijn favoriete film
Maak een dictionary voor je favoriete film met drie sleutels ("titel", "jaar", "score"). Print elke waarde apart met een f-string.
Verwachte uitvoer (voorbeeld):
Titel: The Matrix
Jaar: 1999
Score: 9.0
film = {
...
}
print(f"Titel: {...}")
print(f"Jaar: {...}")
print(f"Score: {...}")💡 Tip
In de f-string: {film['titel']}. Let op het verschil tussen 'titel' (binnen de f-string, enkele aanhalingstekens) en "titel" als sleutel van de dict.
✅ Oplossing
film = {
"titel": "The Matrix",
"jaar": 1999,
"score": 9.0
}
print(f"Titel: {film['titel']}")
print(f"Jaar: {film['jaar']}")
print(f"Score: {film['score']}")
Make Bonus: Klasprofiel met meerdere leerlingen
Maak drie dictionaries voor drie leerlingen (allemaal met "naam" en "klas"). Stop ze in een lijst en print voor elk een nette regel.
Verwachte uitvoer:
Sara zit in klas 3B
Alex zit in klas 3A
Maria zit in klas 4C
leerling1 = {"naam": "Sara", "klas": "3B"}
leerling2 = {"naam": "Alex", "klas": "3A"}
leerling3 = {"naam": "Maria", "klas": "4C"}
klas = [leerling1, leerling2, leerling3]
for leerling in klas:
print(f"...")💡 Tip
In de loop is leerling elke ronde een dictionary. Gebruik leerling['naam'] en leerling['klas'] in een f-string.
✅ Oplossing
leerling1 = {"naam": "Sara", "klas": "3B"}
leerling2 = {"naam": "Alex", "klas": "3A"}
leerling3 = {"naam": "Maria", "klas": "4C"}
klas = [leerling1, leerling2, leerling3]
for leerling in klas:
print(f"{leerling['naam']} zit in klas {leerling['klas']}")
Je kunt nu waardes opzoeken via een sleutel. Maar wat als je alle sleutels en waardes wilt doorlopen, of wilt checken of een sleutel bestaat? Dat leer je in de volgende les.