Appearance
Kapitel 10: Wörterbücher und Mengen
🎯 Lernziele
In diesem Kapitel lernst du:
- Wörterbücher (dict) erstellen und bearbeiten
- Auf Wörterbuchwerte zugreifen
- Mengen (set) erstellen (Duplikate vermeiden)
- Mengenoperationen (Schnittmenge, Vereinigung, etc.)
10.1 Wörterbücher (dict)
📖 Wörterbuch erstellen
python
# Wörterbuch mit geschweiften Klammern
benutzer = {
"name": "Max",
"alter": 25,
"email": "max@example.com",
"ist_admin": False
}
print(benutzer)
# {'name': 'Max', 'alter': 25, 'email': 'max@example.com', 'ist_admin': False}🔑 Schlüssel-Zugriff (Key Access)
python
benutzer = {"name": "Max", "alter": 25, "email": "max@example.com"}
# Methode 1: Eckige Klammern (Fehler wenn Schlüssel nicht existiert)
print(benutzer["name"]) # Max
print(benutzer["alter"]) # 25
# Methode 2: get()-Methode (gibt None zurück wenn nicht gefunden)
print(benutzer.get("name")) # Max
print(benutzer.get("telefon")) # None (kein Fehler!)
print(benutzer.get("telefon", "Nicht vorhanden")) # "Nicht vorhanden"➕ Elemente hinzufügen/ändern
python
benutzer = {"name": "Max", "alter": 25}
# Element hinzufügen/ändern
benutzer["email"] = "max@example.com"
benutzer["alter"] = 26 # Ändert bestehenden Wert
print(benutzer)
# {'name': 'Max', 'alter': 26, 'email': 'max@example.com'}➖ Elemente entfernen
python
benutzer = {"name": "Max", "alter": 25, "email": "max@example.com"}
# del - löschen
del benutzer["email"]
print(benutzer) # {'name': 'Max', 'alter': 25}
# pop() - löschen und Wert zurückgeben
email = benutzer.pop("email", "Nicht gefunden")
print(email) # max@example.com
print(benutzer) # {'name': 'Max', 'alter': 25}
# popitem() - letztes Element löschen (Python 3.7+)
benutzer.popitem()
# clear() - alle Elemente löschen
benutzer.clear()
print(benutzer) # {}🔍 Nützliche Methoden
python
benutzer = {"name": "Max", "alter": 25, "email": "max@example.com"}
# keys() - alle Schlüssel
print(benutzer.keys()) # dict_keys(['name', 'alter', 'email'])
# values() - alle Werte
print(benutzer.values()) # dict_values(['Max', 25, 'max@example.com'])
# items() - alle Schlüssel-Wert-Paare
print(benutzer.items())
# dict_items([('name', 'Max'), ('alter', 25), ('email', 'max@example.com')])
# Über Wörterbuch iterieren
for schlüssel, wert in benutzer.items():
print(f"{schlüssel}: {wert}")💡 Praxisbeispiel: Studentenverwaltung
python
# Studentendatenbank
studenten = {}
# Student hinzufügen
def student_hinzufügen(matrikelnummer, name, alter, fach):
studenten[matrikelnummer] = {
"name": name,
"alter": alter,
"fach": fach
}
print(f"Student {name} hinzugefügt!")
# Student abrufen
def student_abrufen(matrikelnummer):
if matrikelnummer in studenten:
return studenten[matrikelnummer]
else:
return "Student nicht gefunden!"
# Test
student_hinzufügen("S001", "Max", 20, "Informatik")
student_hinzufügen("S002", "Anna", 22, "Mathematik")
print(student_abrufen("S001"))
print(student_abrufen("S003")) # Nicht gefunden10.2 Mengen (set)
🔺 Menge erstellen (KEINE Duplikate!)
python
# Menge mit geschweiften Klammern
zahlen = {1, 2, 3, 3, 4, 4, 5}
print(zahlen) # {1, 2, 3, 4, 5} (Duplikate werden entfernt!)
# Mit set()-Funktion
text = "hello"
buchstaben = set(text)
print(buchstaben) # {'h', 'e', 'l', 'o'} (zwei 'l' werden zu einem!)
# LEERE Menge erstellen (WICHTIG!)
leer1 = set() # Richtig: leere Menge
leer2 = {} # FALSCH! Das erstellt ein leeres Wörterbuch➕ Elemente hinzufügen
python
zahlen = {1, 2, 3}
# add() - ein Element hinzufügen
zahlen.add(4)
print(zahlen) # {1, 2, 3, 4}
# update() - mehrere Elemente hinzufügen
zahlen.update([5, 6, 7])
print(zahlen) # {1, 2, 3, 4, 5, 6, 7}➖ Elemente entfernen
python
zahlen = {1, 2, 3, 4, 5}
# remove() - entfernen (Fehler wenn nicht gefunden)
zahlen.remove(3)
print(zahlen) # {1, 2, 4, 5}
# discard() - entfernen (KEIN Fehler wenn nicht gefunden)
zahlen.discard(10) # Kein Fehler!
print(zahlen) # {1, 2, 4, 5}
# pop() - zufälliges Element entfernen (Mengen sind unsortiert!)
entfernt = zahlen.pop()
print(entfernt) # Zufälliges Element
print(zahlen)
# clear() - alle Elemente entfernen
zahlen.clear()
print(zahlen) # set()🧮 Mengenoperationen
python
a = {1, 2, 3, 4, 5}
b = {4, 5, 6, 7, 8}
# Schnittmenge (INTERSECTION) - gemeinsame Elemente
print(a & b) # {4, 5}
print(a.intersection(b)) # {4, 5}
# Vereinigung (UNION) - alle Elemente (ohne Duplikate)
print(a | b) # {1, 2, 3, 4, 5, 6, 7, 8}
print(a.union(b)) # {1, 2, 3, 4, 5, 6, 7, 8}
# Differenz (DIFFERENCE) - Elemente in a, aber nicht in b
print(a - b) # {1, 2, 3}
print(a.difference(b)) # {1, 2, 3}
# Symmetrische Differenz - Elemente in a ODER b, aber nicht in beiden
print(a ^ b) # {1, 2, 3, 6, 7, 8}
print(a.symmetric_difference(b)) # {1, 2, 3, 6, 7, 8}✅ Überprüfungsmethoden
python
a = {1, 2, 3}
b = {1, 2, 3, 4, 5}
# Teilmenge (subset)
print(a <= b) # True (a ist Teilmenge von b)
print(a.issubset(b)) # True
# Obermenge (superset)
print(b >= a) # True (b ist Obermenge von a)
print(b.issuperset(a)) # True
# Disjunkt (keine gemeinsamen Elemente)
c = {6, 7, 8}
print(a.isdisjoint(c)) # True (keine gemeinsamen Elemente)💡 Praxisbeispiel: Duplikate entfernen
python
# Liste mit Duplikaten
zahlen_liste = [1, 2, 2, 3, 3, 3, 4, 5, 5]
# Duplikate mit Menge entfernen
zahlen_menge = set(zahlen_liste)
print(zahlen_menge) # {1, 2, 3, 4, 5}
# Zurück in Liste konvertieren
zahlen_eindeutig = list(zahlen_menge)
print(zahlen_eindeutig) # [1, 2, 3, 4, 5] (Reihenfolge kann anders sein!)💡 Praxisbeispiel: Gemeinsame Freunde finden
python
# Freundeslisten
freunde_max = {"Anna", "Tom", "Lisa", "Tim"}
freunde_anna = {"Tom", "Lisa", "Kevin", "Sarah"}
# Gemeinsame Freunde (Schnittmenge)
gemeinsam = freunde_max & freunde_anna
print(f"Gemeinsame Freunde: {gemeinsam}") # {'Tom', 'Lisa'}
# Freunde von beiden (Vereinigung)
alle_freunde = freunde_max | freunde_anna
print(f"Alle Freunde: {alle_freunde}")
# Nur Freunde von Max (nicht von Anna)
nur_max = freunde_max - freunde_anna
print(f"Nur Freunde von Max: {nur_max}") # {'Tim'}⚠️ Häufige Fehler
❌ Fehler 1: Wörterbuch-Schlüssel existiert nicht
python
benutzer = {"name": "Max"}
# Falsch (KeyError!)
# print(benutzer["alter"])
# Richtig: get() verwenden
print(benutzer.get("alter")) # None (kein Fehler)
print(benutzer.get("alter", "Nicht vorhanden")) # "Nicht vorhanden"❌ Fehler 2: Menge ist unsortiert!
python
zahlen = {5, 2, 8, 1, 9}
print(zahlen) # {1, 2, 5, 8, 9} (Reihenfolge nicht garantiert!)
# Wenn Sortierung wichtig ist:
zahlen_sortiert = sorted(zahlen)
print(zahlen_sortiert) # [1, 2, 5, 8, 9]❌ Fehler 3: Leere Menge erstellen
python
# Falsch (das ist ein Wörterbuch!)
leer = {}
# Richtig (das ist eine Menge!)
leer = set()
print(type(leer)) # <class 'set'>📝 Zusammenfassung
In diesem Kapitel hast du gelernt:
- ✅ Wörterbücher (dict) zu erstellen und zu bearbeiten
- ✅ Auf Wörterbuchwerte zuzugreifen ([] vs. get())
- ✅ Wörterbuchmethoden zu verwenden (keys, values, items)
- ✅ Mengen (set) zu erstellen (Duplikate werden entfernt!)
- ✅ Mengenoperationen durchzuführen (Schnittmenge, Vereinigung, etc.)
- ✅ Häufige Fehler zu vermeiden
🎯 Übung
- Erstelle ein Wörterbuch mit Informationen über dich (Name, Alter, Stadt, Hobbys)
- Füge ein neues Hobby hinzu und entferne eines
- Erstelle zwei Mengen mit deinen Lieblingszahlen und finde die gemeinsamen Zahlen
- Entferne Duplikate aus einer Liste mit
set()
⏭️ Nächstes Kapitel
In Kapitel 11 lernen wir Funktionen - den Schlüssel zur wiederverwendbaren Code!
