Fingerübungen 2: Dicts

Fingerübungen 2: Dicts#

Sei gegeben:

shopping_dict = {"apple": 5, "banana": 4, "milk": 2}
shopping_dict_len = len(shopping_dict)

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

Anzahl der Keys

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

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 }
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[6], line 1
----> 1 assert set(shopping_dict_keys) == { 'apple', 'banana', 'milk' }
      2 assert set(shopping_dict_values) == { 2, 4, 5 }

NameError: name 'shopping_dict_keys' is not defined

Erhöhe die Anzahl der “apple” um 2

... # 
Ellipsis
assert shopping_dict["apple"] == 7
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[8], line 1
----> 1 assert shopping_dict["apple"] == 7

AssertionError: 

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#

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

Erzeuge ein “umgedrehtes” Dictionary, bei dem man für jede Wortlänge die entsprechenden Wörter nachschlagen kann!

laenge_wort = {}
...t
  Cell In[12], line 2
    ...t
       ^
SyntaxError: invalid syntax
# assert laenge_wort == {5: {'Tschau', 'hallo'}, 4: {'Gott', 'Grüß', 'Welt'}}

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