Dictionaries und Sets in Python
Untersuchen Sie die Erstellung von dict und set, Mitgliedschaftstests und gängige Muster wie das Zählen von Häufigkeiten mit collections.Counter.
Dictionaries und Sets in Python ist eine kostenlose DSA Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DSA Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DSA Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Python-Dictionaries: Schlüssel-Wert-Speicher
Ein Python-dict ordnet Schlüssel Werten zu und bietet im Durchschnitt O(1) für das Nachschlagen, Einfügen und Löschen. Es ist die Grundlage für Two-Sum, Anagrammprüfungen und das Zählen von Häufigkeiten. Der Code zeigt dies.
d = {'apple': 3, 'banana': 5}
print(d['apple']) # 3
d['cherry'] = 7
print(len(d)) # 3
print('banana' in d) # True
del d['apple']
print(d) # {'banana': 5, 'cherry': 7}Sicheres Nachschlagen mit .get()
Das Lesen eines nicht vorhandenen Schlüssels mit d[key] führt mit einem KeyError zum Absturz. Verwenden Sie stattdessen d.get(key, default), um einen Ersatzwert zurückzugeben – eine sichere Gewohnheit, die unerwartete Laufzeitfehler vermeidet.
freq = {}
words = ['the', 'cat', 'sat', 'on', 'the', 'mat']
for w in words:
freq[w] = freq.get(w, 0) + 1
print(freq)
# {'the': 2, 'cat': 1, 'sat': 1, 'on': 1, 'mat': 1}
print(freq.get('dog', 0)) # 0 (no KeyError)defaultdict für übersichtlicheres Gruppieren
defaultdict(list) erstellt für jeden neuen Schlüssel automatisch eine leere Liste, sodass bei Gruppierungsproblemen viel Standardcode entfällt. defaultdict(int) startet jeden Schlüssel mit 0 und eignet sich daher gut zum Zählen.
from collections import defaultdict
groups = defaultdict(list)
words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
for w in words:
key = ''.join(sorted(w)) # canonical anagram key
groups[key].append(w)
print(list(groups.values()))
# [['eat','tea','ate'], ['tan','nat'], ['bat']]Counter: Schnelle Häufigkeitszuordnungen
Counter ist ein dict zum Zählen: Übergeben Sie ihm ein beliebiges Iterable und erhalten Sie sofort eine Häufigkeitszuordnung. most_common(k) gibt die häufigsten k Elemente zurück. Der Code zeigt eine Anagrammprüfung.
from collections import Counter
c = Counter('abracadabra')
print(c) # Counter({'a':5,'b':2,'r':2,'c':1,'d':1})
print(c.most_common(2)) # [('a', 5), ('b', 2)]
# Valid anagram check
def is_anagram(s, t):
return Counter(s) == Counter(t)
print(is_anagram('anagram', 'nagaram')) # TruePython-Sets: Ungeordnete Sammlungen eindeutiger Elemente
Ein set enthält eindeutige Elemente und bietet O(1) für Mitgliedschaftstests. Verwenden Sie {1, 2, 3} oder set(iterable) – aber {} erstellt ein dict. Für ein leeres set verwenden Sie daher set(). Ideal, um Duplikate zu erkennen.
seen = set()
nums = [1, 2, 3, 2, 1, 4]
duplicates = []
for n in nums:
if n in seen: # O(1) check
duplicates.append(n)
seen.add(n)
print(duplicates) # [2, 1]
print(len(seen)) # 4 (unique values)Set-Operationen für Vorstellungsgespräche
Mit Sets können Sie Mengenoperationen ausführen: | Vereinigung, & Schnittmenge, - Differenz und ^ symmetrische Differenz. Damit lösen Sie Fragen nach "gemeinsamen Elementen" in einer einzigen Zeile.
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a | b) # {1, 2, 3, 4, 5, 6} union
print(a & b) # {3, 4} intersection
print(a - b) # {1, 2} difference
print(a ^ b) # {1, 2, 5, 6} symmetric diffMitgliedschaftstest: Liste oder Set
Die gewählte Datenstruktur beeinflusst die Geschwindigkeit. Eine Prüfung mit in dauert bei einer Liste O(n), bei einem Set dagegen O(1). Eine Liste vor wiederholten Nachschlagevorgängen in ein Set umzuwandeln, ist eine gängige Optimierung.
word_list = ['apple', 'banana', 'cherry', 'date']
word_set = set(word_list)
# O(n) per check
print('banana' in word_list) # True
# O(1) per check
print('banana' in word_set) # True
# Practical example: find common elements
a = [1, 2, 3, 4, 5]
b = [3, 4, 5, 6, 7]
common = [x for x in a if x in set(b)]
print(common) # [3, 4, 5]Dictionaries durchlaufen: Schlüssel, Werte, Elemente
Durchlaufen Sie ein dict mit .keys(), .values() oder .items(). Löschen Sie niemals während der Schleife Schlüssel – sammeln Sie sie zuerst in einer Liste und löschen Sie sie anschließend. Sehen Sie sich den Code an.
scores = {'Alice': 90, 'Bob': 75, 'Carol': 88}
for name, score in scores.items():
print(f'{name}: {score}')
# Find key with max value
best = max(scores, key=scores.get)
print(best) # Alice
# Safe deletion
to_del = [k for k, v in scores.items() if v < 80]
for k in to_del:
del scores[k]
print(scores) # {'Alice': 90, 'Carol': 88}Frozenset: Hashbare Sets
Ein frozenset ist ein unveränderliches Set und kann daher als Schlüssel eines dict verwendet werden oder in einem anderen Set enthalten sein. Praktisch, um Anagramme anhand ihrer Buchstabenmenge zu gruppieren, wenn die Reihenfolge keine Rolle spielt.
from collections import defaultdict
words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
groups = defaultdict(list)
for w in words:
key = frozenset(w) # hashable; 'eat','tea','ate' all share same key
groups[key].append(w)
print([sorted(g) for g in groups.values()])
# [['ate','eat','tea'], ['nat','tan'], ['bat']]Dict-Comprehensions für Transformationen
Dict-Comprehensions erstellen eine Zuordnung in einer Zeile: {k: v for ...}. Ideal, um ein dict umzukehren oder Paare zu filtern. Beachten Sie: Beim Umkehren wird vorausgesetzt, dass die Werte eindeutig sind. Sehen Sie sich den Code an.
# Invert a dict
original = {'a': 1, 'b': 2, 'c': 3}
inverted = {v: k for k, v in original.items()}
print(inverted) # {1:'a', 2:'b', 3:'c'}
# Filter by value
scores = {'Alice': 90, 'Bob': 55, 'Carol': 78}
passing = {k: v for k, v in scores.items() if v >= 60}
print(passing) # {'Alice': 90, 'Carol': 78}Längste aufeinanderfolgende Sequenz
Mit Sets lässt sich die längste aufeinanderfolgende Sequenz in O(n) ermitteln: Legen Sie alle Zahlen in ein Set und zählen Sie nur von Zahlen aus aufwärts, deren Vorgänger fehlt. Sortieren ist nicht erforderlich.
def longest_consecutive(nums):
num_set = set(nums)
best = 0
for n in num_set:
if n - 1 not in num_set: # start of sequence
cur = n
streak = 1
while cur + 1 in num_set:
cur += 1
streak += 1
best = max(best, streak)
return best
print(longest_consecutive([100,4,200,1,3,2])) # 4 (1,2,3,4)Kurzer Test
Kurzer Test – prüfen Sie, wie gut die dict- und set-Konzepte aus dieser Lektion hängen geblieben sind. Vertrauen Sie hier auf Ihr Gefühl. 🎯
Zusammenfassung der Lektion
Zusammenfassung: dicts ermöglichen O(1)-Nachschlagevorgänge zum Zählen und Gruppieren, Counter und defaultdict reduzieren den Standardcode, und sets machen aus O(n)-Durchläufen Prüfungen mit O(1).
Häufig gestellte Fragen
Ist die Lektion „Dictionaries und Sets in Python“ kostenlos?
Ja — der vollständige Text von „Dictionaries und Sets in Python“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DSA Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DSA Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Dictionaries und Sets in Python“?
Untersuchen Sie die Erstellung von dict und set, Mitgliedschaftstests und gängige Muster wie das Zählen von Häufigkeiten mit collections.Counter. Du übst DSA Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um DSA Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. DSA Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Dictionaries und Sets in Python“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser DSA Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede DSA Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Listen, Tupel und Slicing
- Dictionaries und Sets in Python
- Comprehensions und Built-ins
- Funktionen, Closures und Lambda