Ga naar hoofdinhoud

Dictionaries

Wat je al kent

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 0 staat.
  • 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']}")
Volgende les

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.