Ga naar hoofdinhoud

Door een dictionary loopen

Wat je al kent

Je kunt dictionaries maken en waardes opzoeken met een sleutel. In deze les leer je hoe je door een dictionary loopt en hoe je veilig controleert of een sleutel bestaat.

Door sleutels loopen

Een simpele for-loop op een dictionary geeft je de sleutels:

leerling = {"naam": "Sara", "leeftijd": 15, "klas": "3B"}

for sleutel in leerling:
print(sleutel)

Uitvoer:

naam
leeftijd
klas

Door sleutels én waardes loopen — .items()

Wil je beide tegelijk? Gebruik .items():

for sleutel, waarde in leerling.items():
print(f"{sleutel}: {waarde}")

Uitvoer:

naam: Sara
leeftijd: 15
klas: 3B

.items() levert elke ronde een paar op: eerst de sleutel, dan de waarde.

Bestaat de sleutel? — in-operator

Met in check je of een sleutel in de dictionary zit. Dat voorkomt een KeyError:

if "naam" in leerling:
print(leerling["naam"])
else:
print("Geen naam bekend.")

Probeer zelf

Maak een dictionary prijzen = {"appel": 0.50, "banaan": 0.30} en loop er met .items() doorheen om elke prijs te printen.

prijzen = {...}

for ... in ...:
  print(f"...")
✅ Oplossing
prijzen = {"appel": 0.50, "banaan": 0.30}

for product, prijs in prijzen.items():
print(f"{product}: € {prijs}")

Predict

Wat print dit programma?

voorraad = {"appel": 5, "banaan": 0, "kers": 12}

for product, aantal in voorraad.items():
if aantal > 0:
print(f"{product} op voorraad ({aantal})")
else:
print(f"{product} is uitverkocht")
Bekijk het antwoord
appel op voorraad (5)
banaan is uitverkocht
kers op voorraad (12)

In elke ronde krijg je een product-aantal-paar. De if kiest het juiste bericht op basis van het aantal.


Run

Voer de code uit en controleer.


Investigate

Wat geeft de in-operator terug? Probeer dit:

leerling = {"naam": "Sara", "klas": "3B"}

print("naam" in leerling)
print("school" in leerling)
print("3B" in leerling)
Bekijk het antwoord
True
False
False

in controleert sleutels, niet waardes. "3B" is een waarde (geen sleutel), dus de uitkomst is False.


Er gaat iets mis

leerling = {"naam": "Sara"}
print(leerling["school"])

Foutmelding:

KeyError: 'school'

Waarom? De sleutel "school" bestaat niet. Python stopt direct met uitvoeren — daar zit geen else-tak achter.

Oplossing: Check eerst met in:

if "school" in leerling:
print(leerling["school"])
else:
print("Geen school bekend.")

Modify

Pas de code aan zodat hij elke sleutel en waarde print met .items() en een f-string.

profiel = {"naam": "Alex", "leeftijd": 15, "hobby": "muziek"}

for sleutel in profiel:
  print(sleutel)
💡 Tip

Vervang for sleutel in profiel: door for sleutel, waarde in profiel.items():. Print dan een f-string met beide.

✅ Oplossing
profiel = {"naam": "Alex", "leeftijd": 15, "hobby": "muziek"}

for sleutel, waarde in profiel.items():
print(f"{sleutel}: {waarde}")

Make: Profielprinter

Maak een dictionary profiel met minstens 5 sleutels over jezelf. Loop met .items() over de dictionary en print elke regel netjes.

Verwachte uitvoer:

=== Mijn Profiel ===
naam: Alex
leeftijd: 15
hobby: muziek
stad: Amsterdam
favoriete eten: pasta
====================
profiel = {
  "naam": "Alex",
  "leeftijd": 15,
  "hobby": "muziek",
  "stad": "Amsterdam",
  "favoriete eten": "pasta"
}

print("=== Mijn Profiel ===")
for ... in profiel.items():
  print(f"  ...")
print("====================")
💡 Tip

for sleutel, waarde in profiel.items(): — print met indent: f" {sleutel}: {waarde}".

✅ Oplossing
profiel = {
"naam": "Alex",
"leeftijd": 15,
"hobby": "muziek",
"stad": "Amsterdam",
"favoriete eten": "pasta"
}

print("=== Mijn Profiel ===")
for sleutel, waarde in profiel.items():
print(f" {sleutel}: {waarde}")
print("====================")

Make Bonus: Digitaal winkelmandje

Dit is de eindbaas van de basiscursus! Bouw een winkelmandje met een dictionary van producten en prijzen. Schrijf een functie bereken_totaal(winkel, mandje) die met .items() door het mandje loopt en de totaalprijs teruggeeft met return.

Je combineert hier alles wat je geleerd hebt: dictionaries, .items(), for-loops, functies, parameters, return en f-strings.

# De winkel: product -> prijs
winkel = {
  "Brood": 2.50,
  "Kaas": 4.00,
  "Melk": 1.20,
  "Appel": 0.80,
  "Chocola": 3.50
}

# Het mandje: product -> aantal
mandje = {
  "Brood": 2,
  "Melk": 1,
  "Chocola": 3
}

def bereken_totaal(winkel, mandje):
  totaal = 0
  for product, aantal in mandje.items():
      # Zoek de prijs op in de winkel-dictionary
      # Reken uit: prijs * aantal
      # Tel het op bij totaal
      ...
  return totaal

# Print een kassabon
print("=== Kassabon ===")
for product, aantal in mandje.items():
  prijs = winkel[product]
  print(f"  {product} x{aantal}  ->  {prijs * aantal} euro")
print("================")
print(f"Totaal: {bereken_totaal(winkel, mandje)} euro")
💡 Tip

Drie stappen binnen de loop:

  1. prijs = winkel[product] — zoek de prijs op.
  2. regel = prijs * aantal — bereken de regelprijs.
  3. totaal += regel — tel op bij totaal.
✅ Oplossing
def bereken_totaal(winkel, mandje):
totaal = 0
for product, aantal in mandje.items():
prijs = winkel[product]
totaal += prijs * aantal
return totaal
Gefeliciteerd!

Je hebt nu de basis van Python onder de knie: variabelen, rekenen, tekst, beslissingen, herhaling, functies, lijsten en dictionaries. Hiermee kun je écht programma's bouwen. Tijd om iets eigens te verzinnen!