0%

Dictionaries en andere verzamelingen

Kies de juiste verzameling

Lijsten en dictionaries lossen al twee verschillende modelleerproblemen op:

  • een lijst houdt items in een nuttige volgorde;

  • een dictionary geeft waarden betekenisvolle labels.

Nog één verzameling verdient een plek in deze cursus, omdat die een andere vraag beantwoordt: “Heb ik deze waarde al eerder gezien?”

Set: bewaar elke waarde één keer

Een set bewaart unieke waarden. Als een waarde twee keer in een setliteral staat, bewaart de set toch maar één exemplaar:

Try it

De controle op aanwezigheid drukt True af. De afgedrukte volgorde van de set kan variëren, dus gebruik geen set wanneer de eerste, tweede of laatste positie ertoe doet. Een set garandeert uniekheid, geen positie.

Dat maakt een set nuttig voor vragen zoals:

  • Welke tags zijn voorgekomen?

  • Is deze gebruikersnaam al gebruikt?

  • Welke quizcategorieën zijn aanwezig?

Kies op basis van de eigenschap die je nodig hebt

Stel dat een quizprogramma drie soorten gegevens bewaart:

question_order = ["warm-up", "loops", "debugging"]

question = {
    "prompt": "Which keyword ends a loop?",
    "answer": "break",
}

seen_categories = {"basics", "loops"}

Elke verzameling zegt iets anders:

BehoefteVerzamelingGarantie
items in een betekenisvolle volgordelijstposities en volgorde blijven behouden
benoemde velden of opzoeken met een sleuteldictionarysleutels verklaren en vinden waarden
unieke aanwezigheidsetelke waarde komt hoogstens één keer voor

Een lijst kan dubbele tags bevatten. Een dictionary zou er labels voor kunnen verzinnen. Geen van beide is ongeldige Python-code, maar de set drukt de regel direct uit.

De bijzonderheid van een lege set

Een lege lijst is [] en een lege dictionary is {}. Een lege set gebruikt set():

seen_categories = set()

Python heeft {} al aan dictionaries gegeven, dus de functieaanroep voorkomt dubbelzinnige accolades. Het is een kleine eigenaardigheid, maar in elk geval een duidelijke.

Je hoeft dit alleen te kunnen herkennen. Je moet een set kunnen kiezen wanneer uniekheid het probleem is en in kunnen gebruiken om op aanwezigheid te controleren. Geavanceerdere setbewerkingen kunnen wachten tot een programma ze echt nodig heeft.

Welke verzameling bewaart unieke tags het best wanneer hun volgorde er niet toe doet?