Fingerübungen 2: Dicts#

Sei gegeben:

shopping_dict = {"apple": 5, "banana": 4, "milk": 2}
print(shopping_dict) 
{'apple': 5, 'banana': 4, 'milk': 2}

Anzahl der Keys

Anzahl_der_Keys_bsp = 3
... # 
assert Anzahl_der_Keys == Anzahl_der_Keys_bsp
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In [2], line 3
      1 Anzahl_der_Keys_bsp = 3
      2 # 
----> 3 assert Anzahl_der_Keys == Anzahl_der_Keys_bsp

NameError: name 'Anzahl_der_Keys' is not defined

Ist der key “ham” enthalten? Verschiedene Lösungen, incl. get()

... # 
... # 
assert ham_in_shopping_dict == False
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In [4], line 1
----> 1 assert ham_in_shopping_dict == False

NameError: name 'ham_in_shopping_dict' is not defined

Liste aller Keys; Liste aller Values

... # 
... # 
#assert set(shopping_dict_keys) == { 'apple', 'banana', 'milk' }
#assert set(shopping_dict_values) == { 2, 4, 5 }

Erhöhe die Anzahl der “apple” um 2

... # 
#assert shopping_dict["apple"] == 7
Ellipsis

Füge hinzu:

  • “ham”: 1

  • “apple”: 999 (“apple” gibt es schon: Aussagekräftige Warnung ausgeben!)

# ham: 1
... # 

# apple: 999
key = "apple"
... # 
... # 
shopping_dict
{'apple': 5, 'banana': 4, 'milk': 2}

Lösche aus dem dict:

  • “milk”

  • “steak”

Gib als Ergebnis der Löschoperation den Wert des gelöschten Elementes zurück. Falls es das Element nicht gibt, gib ersatzweise None zurück.

key = "milk"
... # 

key = "steak"
... # 

Aufgabe: Wortlänge#

Gegeben: Ein Dict, das die Länge von Wörtern angibt

wort_laenge = { "hallo": 5, "Welt": 4, "Grüß": 4, "Gott": 4, "Tschau": 5}

gesucht:

  • ein inverses Dictionary, bei dem man für jede Wortlänge die entsprechenden Wörter nachschlagen kann!

laenge_wort_bsp = { 5: {'Tschau', 'hallo'}, 4: {'Gott', 'Grüß', 'Welt'} }
laenge_wort = ...
# assert laenge_wort == laenge_wort_bsp

Geburtstage in jedem Monat#

Gegeben: ein dict, das für jede Person den Geburtstag angibt

  • z.B. Geburtstage_nach_Name = { "Peter": "1988-01-08", "Jenny": "2004-01-17", "Ali": "2003-02-12", ... }

Gesucht: ein dict, das für jeden Monat in einer Liste angibt, wer in diesem Monat Geburtstag hat

  • z.B. Geburtstage_nach_Monat = { "01" : [ "Peter", "Jenny" ], "02" : [ "Ali" ] }

Vorgehen z.B. so:

  • Ergebnis-Dict Geburtstage_nach_Monat anlegen: für jeden Monat eine leere Liste

    • z.B. Monatskinder = { "01": [], "02": [], ...}

  • durch Geburtstage_nach_Name durchgehen und Name und Datum identifizieren

  • aus Datum (z.B. mit slicing) den Monat extrahieren

  • den Namen in die Liste des jeweiligen Monats in Geburtstage_nach_Monat hinzufügen