Dictionaries en sets in Python
Verken het maken van dicts en sets, lidmaatschapstests en veelgebruikte patronen, zoals frequenties tellen met collections.Counter.
Dictionaries en sets in Python is een gratis Voorbereiding op programmeerinterviews-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op programmeerinterviews. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
Python-woordenboeken: opslag van sleutel-waardeparen
Een Python-dict koppelt sleutels aan waarden, met gemiddeld O(1) voor opzoeken, invoegen en verwijderen. Het vormt de basis voor het twee-sommenprobleem, anagramcontroles en frequentietellingen. De code laat dit zien.
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}Veilig opzoeken met .get()
Een ontbrekende sleutel lezen met d[key] veroorzaakt een KeyError. Gebruik d.get(key, default) om in plaats daarvan een terugvalwaarde terug te geven: een veilige gewoonte die onverwachte fouten tijdens de uitvoering voorkomt.
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 voor overzichtelijker groeperen
defaultdict(list) maakt automatisch een lege lijst aan voor elke nieuwe sleutel, zodat groeperingsproblemen minder standaardcode nodig hebben. defaultdict(int) begint elke sleutel op 0, wat tellen eenvoudig maakt.
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: snelle frequentiekaarten
Counter is een dict die speciaal bedoeld is om te tellen: geef hem een willekeurige itereerbare waarde en je krijgt direct een frequentieoverzicht. most_common(k) geeft de bovenste k terug. De code toont een anagramcontrole.
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: ongeordende verzamelingen unieke elementen
Een set bevat unieke items en biedt O(1)-controles op lidmaatschap. Gebruik {1, 2, 3} of set(iterable), maar {} maakt een dict; gebruik dus set() voor een lege set. Ideaal om dubbele waarden op te sporen.
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)Bewerkingen met sets voor sollicitatiegesprekken
Met sets doe je wiskundige bewerkingen: | unie, & doorsnede, - verschil en ^ symmetrisch verschil. Hiermee los je vragen over gemeenschappelijke elementen in één regel op.
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 diffLidmaatschap controleren: list versus set
De gekozen structuur beïnvloedt de snelheid. Een in-controle op een list kost O(n); op een set kost die O(1). Een list vóór herhaald opzoeken omzetten naar een set is een gebruikelijke versnelling.
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]Door dicts itereren: sleutels, waarden en items
Loop door een dict met .keys(), .values() of .items(). Verwijder nooit sleutels halverwege een lus: verzamel ze eerst in een lijst en verwijder ze daarna. Bekijk de code.
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
Een frozenset is een onveranderlijke set en kan daardoor een dict-sleutel zijn of in een andere set staan. Handig om anagrammen te groeperen op basis van hun verzameling letters wanneer de volgorde niet uitmaakt.
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-comprehensies voor transformaties
Dict-comprehensies bouwen in één regel een koppeling: {k: v for ...}. Handig om een dict om te keren of paren te filteren. Let op: omkeren veronderstelt dat de waarden uniek zijn. Bekijk de code.
# 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}Langste opeenvolgende reeks
Met sets los je de langste opeenvolgende reeks op in O(n): stop alle getallen in een set en tel vervolgens alleen verder vanaf getallen waarvan de voorganger ontbreekt. Sorteren is niet nodig.
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)Korte controle
Korte controle: kijk hoe goed de ideeën over dicts en sets uit deze les zijn blijven hangen. Vertrouw hier op je intuïtie. 🎯
Samenvatting van de les
Samenvatting: dicts bieden O(1)-opzoekingen voor tellen en groeperen, Counter en defaultdict beperken de hoeveelheid standaardcode en sets veranderen O(n)-zoektochten in O(1)-controles.
Leer Voorbereiding op programmeerinterviews met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 90
- Lessen
- 360
Veelgestelde vragen
Is de les “Dictionaries en sets in Python” gratis?
Ja — de volledige tekst van “Dictionaries en sets in Python” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op programmeerinterviews wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
Wat leer ik in “Dictionaries en sets in Python”?
Verken het maken van dicts en sets, lidmaatschapstests en veelgebruikte patronen, zoals frequenties tellen met collections.Counter. Je oefent met Voorbereiding op programmeerinterviews door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Voorbereiding op programmeerinterviews te beginnen?
Ervaring vooraf is niet nodig. Voorbereiding op programmeerinterviews op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Dictionaries en sets in Python”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op programmeerinterviews?
Ja. Elke les over Voorbereiding op programmeerinterviews bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Lijsten, tuples en slicing
- Dictionaries en sets in Python
- Comprehensions en ingebouwde functies
- Functies, closures en lambda