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 3: Dictionary loopen: .keys(), .values(), .items()

Loop over alle sleutels, waarden, of sleutel-waardeparen. En: hoe je je stap-voor-stap data van lijsten naar dictionaries refactort.

Over een dictionary itereren

Tot nu toe hebt je sleutels en waarden opgehaald met dict["key"] en dict.get("key"). Nu leer je erover heen loopen β€” wat handig is als je alle gegevens wilt verwerken.

Een dictionary heeft vier manieren om te itereren:

device = {"hostname": "sensor1", "cpu": 45, "memory": 78}

# 1. Direct loopen (standaard) β€” alleen sleutels
for key in device:
    print(key)  # hostname  cpu  memory

# 2. .keys() β€” expliciet dezelfde
for key in device.keys():
    print(key)

# 3. .values() β€” alleen waarden
for val in device.values():
    print(val)  # sensor1  45  78

# 4. .items() β€” sleutel Γ‰N waarde tegelijk
for key, val in device.items():
    print(f"{key}: {val}")  # hostname: sensor1  enz.

Welke moet je gebruiken?

βœ… .items()

for key, val in d.items():
    print(f"{key}: {val}")
# Je hebt beide nodig

❌ Fout: beide apart ophalen

for key in d:
    val = d[key]
    print(f"{key}: {val}")
# Omslachtig & langzaam

Interactieve demo

Probeer: kies een iteratiemethode en zie het resultaat

Vuistregel: Gebruik .items() als je sleutel EN waarde nodig hebt. Gebruik .keys() of .values() als je maar één nodig hebt.
>_ Probeer het voorbeeld

Experimenteer: maak een dictionary en loop erover op verschillende manieren.

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

Opdracht: bestelling omzetten naar dictionaries

In taak 1 maakte je twee losse lijsten. In taak 2 maakte je dictionaries. Nu maak je de omzetting af. Bestand: order_report.py

  1. Begin met de twee lijsten uit taak 1: de producten en de aantallen.
  2. Loop over de lijsten en maak per regel een dictionary met "product" en "quantity". Denk aan enumerate() uit sprint 3 om de bijbehorende waarde uit de tweede lijst te halen.
  3. Voeg elke dictionary toe aan een lijst order.
  4. Loop over de nieuwe lijst en print per regel Ñlle sleutels en waarden met .items(). Let op: .items() werkt op één dictionary, niet op de lijst zelf.
  5. Controleer dat het totale aantal artikelen klopt: tel alle "quantity"-waarden bij elkaar op.

Acceptatiecriteria

  • Script heet order_report.py.
  • De twee lijsten worden in een lus omgezet naar dictionaries.
  • Lijst order bevat dictionaries met "product" en "quantity".
  • Binnen de lus worden met .items() alle sleutel-waardeparen geprint.
  • Het totale aantal artikelen wordt correct opgeteld.