Groeperen en indelen met een map
Anagrammen en vergelijkbare items groeperen
Groeperen en indelen met een map is een gratis Competitive Programming Academy-les op CoddyKit. Dit is les 4 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 Competitive Programming Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Competitive Programming Academy bevat in totaal 4 lessen.
Groeperen is een patroon
Veel opgaven vragen je om elementen die iets gemeen hebben te groeperen. Een koppeling van sleutel naar bakje maakt daar één nette doorgang van. 🗂️
Kies de groepssleutel
De hele truc draait om het kiezen van een sleutel die gelijk is voor elementen in dezelfde groep. Als dat klopt, is de rest eenvoudig.
Groeperen met defaultdict
Gebruik defaultdict(list), zodat elke nieuwe sleutel met een leeg bakje begint. Je voegt elementen toe zonder ooit te controleren of de sleutel bestaat.
from collections import defaultdict
buckets = defaultdict(list)De kernlus
Bereken voor elk element de sleutel en voeg het element toe aan het bakje van die sleutel. Met één regel per element groepeer je alles.
for word in words:
buckets[key_of(word)].append(word)Anagrammen groeperen
Anagrammen hebben dezelfde gesorteerde letters, dus de gesorteerde tekenreeks is de perfecte groepssleutel. Sorteer één keer en groepeer daarna op die sleutel.
k = ''.join(sorted(word))
buckets[k].append(word)Tuple-sleutels voor tellingen
Wanneer sorteren te traag is, kun je ook een tuple met lettertellingen als sleutel gebruiken. Tupels zijn hashbaar en passen daarom probleemloos in een dict.
k = tuple(Counter(word)[c] for c in 'abcdefghijklmnopqrstuvwxyz')Groeperen op een eigenschap
Groepeer getallen op rest, pariteit of lengte door alleen de sleutel te veranderen. Het patroon blijft bij verschillende opgaven hetzelfde.
for n in nums:
buckets[n % 3].append(n)Het idee achter bakjessortering
Als waarden binnen een klein bereik vallen, plaats je elke waarde in een geïndexeerd bakje en lees je de bakjes op volgorde uit. Dat levert bijna lineaire sortering op.
for x in nums:
bucket[x].append(x)De resultaten verzamelen
Na het verdelen over bakjes bestaat het antwoord meestal uit de values van de dict. Zet ze om in een lijst als de beoordelaar de groepen zelf verwacht.
result = list(buckets.values())Per groep tellen
Als je alleen de groottes van groepen nodig hebt, kun je de elementen in een Counter tellen of aan het einde de lengtes optellen. Kies wat de vraag werkelijk vraagt.
sizes = {k: len(v) for k, v in buckets.items()}Waarom een koppeling wint
Groeperen met een koppeling kost O(n) in plaats van dat je elk paar vergelijkt. De gehashte sleutel doet het vergelijkingswerk voor je.
Korte controle
Je wilt woorden zo groeperen dat anagrammen in hetzelfde bakje terechtkomen.
Samenvatting
Groepeer door de sleutel van elk element in één doorgang van O(n) onder te brengen in een defaultdict-bakje. Kies de sleutel zorgvuldig en groepsopgaven worden een stuk eenvoudiger. 🚀
Leer Python 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
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “Groeperen en indelen met een map” gratis?
Ja — de volledige tekst van “Groeperen en indelen met een map” 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 Competitive Programming Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Competitive Programming Academy bevat in totaal 4 lessen.
Wat leer ik in “Groeperen en indelen met een map”?
Anagrammen en vergelijkbare items groeperen Je oefent met Competitive Programming Academy 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 Competitive Programming Academy te beginnen?
Ervaring vooraf is niet nodig. Competitive Programming Academy 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 4 van 4.
Hoe lang duurt de les “Groeperen en indelen met een map”?
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 Competitive Programming Academy?
Ja. Elke les over Competitive Programming Academy 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
- Sets voor lidmaatschap en deduplicatie
- Dictionaries als opzoektabellen
- Counter en defaultdict in actie
- Groeperen en indelen met een map