Modulelessen (2/4)
Dicteer en stel begrip in
Dezelfde syntaxis die wordt gebruikt voor het begrijpen van lijsten werkt ook bij het bouwen dict en set waarden — u hoeft alleen maar de haakjes te veranderen.
Dict-begrip
Syntaxis: {key: value for element in iterable}.
quadrati = {n: n * n for n in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}Algemeen patroon: verander een lijst met tupels in een dictaat.
coppie = [("a", 1), ("b", 2), ("c", 3)]
d = {k: v for k, v in coppie}
# {'a': 1, 'b': 2, 'c': 3}
# (equivalente a dict(coppie) in questo caso)Wissel sleutels en waarden van een dictaat om:
originale = {"a": 1, "b": 2, "c": 3}
invertito = {v: k for k, v in originale.items()}
# {1: 'a', 2: 'b', 3: 'c'}Een dictaat filteren:
prezzi = {"mela": 1.2, "pera": 1.5, "kiwi": 2.5, "ananas": 4.0}
economici = {k: v for k, v in prezzi.items() if v < 2.0}
# {'mela': 1.2, 'pera': 1.5}Begrip instellen
Syntaxis: {expression for element in iterable}. Hetzelfde als een lijst
begrip, maar met accolades.
parole = ["ciao", "mondo", "ciao", "python"]
uniche = {p.upper() for p in parole}
# {'CIAO', 'MONDO', 'PYTHON'}Unieke initialen uit een lijst met namen:
nomi = ["Ada", "Linus", "Grace", "Alan", "Guido"]
iniziali = {n[0] for n in nomi}
# {'A', 'L', 'G'}Filter + transformatie
Net als bij het begrijpen van lijsten, filtert de volgende if:
{n: n * n for n in range(10) if n % 2 == 0}
# {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}Dicteer het begrip voor het verwisselen van sleutels en waarden
Een veel voorkomend patroon om een woordenboek om te keren (sleutels en waarden verwisselen, ervan uitgaande dat waarden uniek zijn) is:
orig_dict = {'a': 1, 'b': 2}
inv_dict = {value: key for key, value in orig_dict.items()}
# result: {1: 'a', 2: 'b'}Probeer het
Gegeven `words = ['mela', 'pera', 'kiwi', 'banaan']`, bouw `lengths` als een dictaat {woord: len(woord)}. Evalueer 'lengtes'.
Toon hint
{p: len(p) voor p in woorden}
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Gegeven `nums = [1, 2, 2, 3, 4, 4, 5]`, bouw `unique_squares` als een SET van de vierkanten. Evalueer `unieke_vierkanten`.
Toon hint
Accolades zonder ':' = begrip ingesteld.
Oplossing beschikbaar na 3 pogingen
Extra uitdaging
Given the list of strings `names = ["Alice", "Bob"]`, use a dict comprehension to create a dictionary that maps each name to its length. Store the dictionary in `name_lengths` and evaluate it.
Toon hint
De syntaxis is {naam: len(naam) voor naam in namen}.
Oplossing beschikbaar na 3 pogingen