1. Was ist ein Dictionary? (Die Karteikasten-Analogie)
Bisher hast du Daten oft in Listen gespeichert. Bei einer Liste greifst du über eine Zahl (den Index 0, 1, 2, ...) auf Einträge zu.
Aber was machst du, wenn du eine Telefonnummer zu einem Namen suchst oder eine deutsche Übersetzung zu einem englischen Wort?
Ein Dictionary (Wörterbuch) funktioniert wie ein echter Karteikasten:
- Vorne auf der Karteikarte steht das Stichwort (der Key / Schlüssel), z.B.
"Anna". - Auf der Rückseite steht die eigentliche Information (der Value / Wert), z.B.
"0171-123456". - Du musst nicht alle Karten von vorne bis hinten durchblättern – Python springt sofort in Lichtgeschwindigkeit zum gesuchten Schlüssel!
# 1. Dictionary erstellen mit geschweiften Klammern {key: value}: kontakt = { "name": "Anna", "alter": 23, "beruf": "Entwicklerin" } # 2. Wert über Schlüssel abrufen: print(kontakt["name"]) # Gibt "Anna" aus # 3. Eintrag hinzufügen oder verändern: kontakt["stadt"] = "Berlin" # Neu hinzugefügt kontakt["alter"] = 24 # Wert aktualisiert # 4. Eintrag löschen: del kontakt["beruf"] # Entfernt den Schlüssel "beruf"
2. Sicherer Datenzugriff mit .get() & Iteration
Greifst du auf einen Schlüssel zu, den es im Dictionary nicht gibt, stürzt dein Programm mit einem gefürchteten KeyError ab!
dict.get(key, standardwert).get(), wenn du nicht sicher weißt, ob der Schlüssel existiert. Statt abzustürzen, liefert Python einen sicheren Standardwert zurück!
user = {"username": "coder99"} # ❌ Riskant: Programm stürzt bei fehlendem Key ab! # print(user["email"]) # 💥 KeyError: 'email' # ✅ Sicher: Liefert Fallback-Wert ohne Absturz! email = user.get("email", "Keine E-Mail angegeben") print(email) # Ausgabe: Keine E-Mail angegeben
Praktische Methoden: .keys(), .values() und .items()
preise = {"Kaffee": 3.50, "Croissant": 2.20, "Tee": 2.80} # Schlüssel und Werte gleichzeitig durchlaufen mit .items(): for produkt, preis in preise.items(): print(f"{produkt} kostet {preis:.2f} €")
3. Was ist ein Set (Menge)? (Die Club-Türsteher-Analogie)
Ein Set (Menge) ist eine Sammlung von Elementen mit zwei besonderen Superkräften: 1. Keine Duplikate erlaubt und 2. Extrem schnelle Suche (in O(1)).
Stell dir einen Club vor, in dem jeder Gast genau einmal auf die Gästeliste darf:
- Versucht jemand doppelt hineinzugehen, ignoriert der Türsteher den zweiten Versuch einfach.
- Es gibt im Club keine feste Sitzordnung (Sets sind ungeordnet und haben keinen Index wie
set[0]).
# Set erstellen (Duplikate fallen automatisch weg): zahlen = {1, 2, 2, 3, 3, 3, 4} print(zahlen) # Ausgabe: {1, 2, 3, 4} # Blitzschnelle Überprüfung mit 'in': if 3 in zahlen: print("3 ist in der Menge enthalten!") # ⚠️ Achtung beim leeren Set: leeres_dict = {} # Erzeugt ein leeres Dictionary! leeres_set = set() # ✅ So erstellst du ein leeres Set!
Mengenoperationen im Überblick
| Operation | Operator | Methode | Bedeutung |
|---|---|---|---|
| Schnittmenge (Intersection) | A & B |
A.intersection(B) |
Gemeinsame Elemente beider Mengen |
| Vereinigung (Union) | A | B |
A.union(B) |
Alle Elemente aus A und B zusammen |
| Differenz | A - B |
A.difference(B) |
Elemente in A, die NICHT in B vorkommen |
4. 🌟 Vollständiges Praxisbeispiel: Wörter-Zähler
Hier siehst du, wie man mit Dictionaries Wort-Häufigkeiten in Texten ermittelt:
def zaehle_woerter(text): haeufigkeit = {} woerter = text.lower().split() for wort in woerter: # Wenn das Wort noch nicht im Dict ist, startet der Zähler bei 0: haeufigkeit[wort] = haeufigkeit.get(wort, 0) + 1 return haeufigkeit beispiel = "Python macht Spaß und Python ist mächtig" print(zaehle_woerter(beispiel)) # Ausgabe: {'python': 2, 'macht': 1, 'spaß': 1, 'und': 1, 'ist': 1, 'mächtig': 1}
5. 🎯 Deine Aufgaben in aufgabe.py
Öffne die Datei g09_dictionaries_und_sets/aufgabe.py und bearbeite die folgenden 4 Aufgaben:
💡 Lösungshinweise (Aufklappen bei Bedarf)
🔍 Tipp zu TODO 1 (Satzzeichen entfernen & Zählen)
Du kannst Satzzeichen mit replace() durch Leerzeichen ersetzen und dann mit .get(wort, 0) + 1 zählen:
bereinigt = text.lower() for zeichen in ".,!?;:()\"'": bereinigt = bereinigt.replace(zeichen, " ") woerter = bereinigt.split()
🔍 Tipp zu TODO 4 (Reihenfolge bei Duplikaten behalten)
Nutze eine Liste für das Ergebnis und ein Set zum Merken bereits gesehener Elemente:
seen = set() ergebnis = [] for element in liste: if element not in seen: seen.add(element) ergebnis.append(element) return ergebnis
6. 🧪 Lösung überprüfen
Führe im Terminal die automatische Test-Suite aus:
python3 test_aufgabe.py