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.
[] vs .get()
Hoe je een dictionary maakt, waarden ophaalt, en waarom .get() veiliger is dan directe toegang.
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
}
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"] # 28 โ
user["country"]
# KeyError!
# Script stopt
user.get("age") # 28 โ
user.get("country")
# None โ geen crash
user["email"] = "alice@ex.com" # toevoegen
user["age"] = 29 # aanpassen
del user["active"] # verwijderen
.get() voor optionele sleutels. Gebruik ["key"] voor verplichte sleutels โ een KeyError wijst dan op een bug.
Probeer: vul een waarde in en zie hoe [] vs .get() zich gedraagt
Experimenteer met dictionaries: maak er een, voeg velden toe, haal ze op met [] en .get().
Herschrijf het script van taak 1 met dictionaries in plaats van twee losse lijsten. Bestand: order.py
order met vier dictionaries. Elke bestelregel bevat "product" en "quantity".for-lus. Haal per regel het product en het aantal op met []."note" toe (bijv. "cadeauverpakking")..get("note", "") om de notitie (of lege string) te printen.Acceptatiecriteria
order.py.order bevat vier dictionaries met "product" en "quantity".for-lus loopt over de bestelling en print elke regel correct."note"; de andere niet..get("note", "") โ optionele velden werken.