Sprint 4 ยท Datastructuren & foutafhandeling  ยท  US1: Dictionaries

Als developer, wil ik bij elkaar horende gegevens onder รฉรฉn naam bewaren in plaats van in losse lijsten, zodat de koppeling niet kan verschuiven en ik in รฉรฉn oogopslag zie wat bij elkaar hoort.

Taak 2: Dictionary: sleutel-waarde met [] vs .get()

Hoe je een dictionary maakt, waarden ophaalt, en waarom .get() veiliger is dan directe toegang.

Dictionary: waarden opslaan onder een naam

In taak 1 zag je waarom parallelle lijsten problematisch zijn. Nu leer je de oplossing: een dictionary. Dit is een verzameling van sleutel-waarde paren (key-value).

Je maakt een dictionary met accolades {}. Elke regel is sleutel: waarde:

user = {
    "username": "alice",
    "age": 28,
    "active": True
}

Waarden ophalen โ€” twee manieren

Je kunt op twee manieren een waarde ophalen. De eerste methode [] crasht als de sleutel niet bestaat. De tweede methode .get() geeft None โ€” veiliger!

โŒ user["age"]

user["age"]      # 28 โœ“
user["country"]
# KeyError!
# Script stopt

โœ… user.get("age")

user.get("age")        # 28 โœ“
user.get("country")
# None โ€” geen crash

Waarden toevoegen en aanpassen

user["email"] = "alice@ex.com"  # toevoegen
user["age"] = 29              # aanpassen
del user["active"]         # verwijderen
Vuistregel: Gebruik .get() voor optionele sleutels. Gebruik ["key"] voor verplichte sleutels โ€” een KeyError wijst dan op een bug.

Interactieve demo

Probeer: vul een waarde in en zie hoe [] vs .get() zich gedraagt

>_ Probeer het voorbeeld

Experimenteer met dictionaries: maak er een, voeg velden toe, haal ze op met [] en .get().

Klik op de knop om de uitvoer van het voorbeeld te zien.

Opdracht: bestelling met dictionaries

Herschrijf het script van taak 1 met dictionaries in plaats van twee losse lijsten. Bestand: order.py

  1. Maak een lijst order met vier dictionaries. Elke bestelregel bevat "product" en "quantity".
  2. Loop over de lijst met een for-lus. Haal per regel het product en het aantal op met [].
  3. Voeg aan รฉรฉn regel een optionele sleutel "note" toe (bijv. "cadeauverpakking").
  4. In de lus: gebruik .get("note", "") om de notitie (of lege string) te printen.
  5. Verander de volgorde van de regels in de lijst en controleer dat elke klant nog steeds het juiste aantal krijgt.

Acceptatiecriteria

  • Script heet order.py.
  • Lijst order bevat vier dictionaries met "product" en "quantity".
  • De for-lus loopt over de bestelling en print elke regel correct.
  • Eรฉn regel heeft een "note"; de andere niet.
  • Notitie wordt geprint met .get("note", "") โ€” optionele velden werken.