0%

Dictionaries en andere verzamelingen · oefening

Controleer sleutels en gebruik get()

Opzoeken met haken is direct en duidelijk wanneer een sleutel verplicht is:

title = book["title"]

Als de sleutel ontbreekt, veroorzaakt Python een KeyError. Soms is dat nuttig, omdat er echt een verplicht veld ontbreekt. Voor optionele informatie heb je een ander plan nodig.

Controleer eerst of de sleutel aanwezig is

De operator in controleert de sleutels van een dictionary:

book = {
    "title": "Kindred",
    "year": 1979,
}

if "creator" in book:
    print(book["creator"])
else:
    print("Creator missing")

in controleert sleutels, geen waarden. Deze expressie:

"Kindred" in book

is False, omdat "Kindred" een waarde is en geen sleutel.

Gebruik not in voor de omgekeerde controle:

if "creator" not in book:
    print("Creator missing")

Vraag een waarde op met get()

De dictionarymethode .get() leest ook een waarde:

format_name = book.get("format")

Als de sleutel ontbreekt, geeft .get() de waarde None terug in plaats van een KeyError te veroorzaken.

Geef een tweede argument mee om een nuttigere standaardwaarde te kiezen:

format_name = book.get("format", "unknown")
print(format_name)
# unknown

De dictionary verandert niet. .get() kiest alleen welke waarde de aanroep teruggeeft.

Verplicht of optioneel?

Kies op basis van de betekenis van het record:

  • Gebruik book["title"] als elk geldig boekrecord een titel moet hebben.

  • Gebruik book.get("format", "unknown") als het formaat optioneel is en de aanroeper een zinvolle standaardwaarde heeft.

  • Gebruik "creator" in book als het programma een andere actie moet uitvoeren afhankelijk van de aanwezigheid van het veld.

Vervang niet elke zoekopdracht met haken door .get(). Een ontbrekende verplichte sleutel stilzwijgend accepteren kan slechte gegevens verbergen. Veilig opzoeken betekent bewust kiezen.

Wat drukt dit programma af?

item = {"name": "Compass", "price": 12}
print(item.get("color", "not listed"))
print(len(item))

Opdracht

Lees verplichte en optionele informatie uit record.

  1. Lees de verplichte "title" met haken en sla de waarde op in title.

  2. Gebruik .get() om "format" te lezen met de standaardwaarde "unknown" en sla het resultaat op in format_name.

  3. Gebruik not in om Creator missing af te drukken wanneer "creator" ontbreekt.

  4. Behoud de laatste twee rapportregels.

Verwachte uitvoer:

Creator missing
Title: Kindred
Format: unknown