De standaardbibliotheek bestaat al · oefening
Tellen met Counter
De tweede taak van het overzicht is activiteitencategorieën tellen. Je zou een dictionary kunnen bouwen en per categorie kunnen controleren of die al eerder is verschenen. Die code is mogelijk, maar de taak komt zo vaak voor dat de standaardbibliotheek er een naam voor heeft: Counter.
De constructor collections.Counter accepteert een iterable van hashbare waarden. Hij geeft een subklasse van dictionary terug waarvan de waarden aantallen zijn:
De ontbrekende categorie drukt 0 af. Een gewone dictionary-lookup zou KeyError opwerpen. Dat verschil hoort bij het publieke contract van Counter en is een reden waarom die bij deze taak past.
Scheid tellen van presenteren
Onze records zijn dictionaries:
{"date": "2026-08-03", "category": "walk", "minutes": 35}
Counter heeft de categoriewaarden nodig, niet de volledige dictionaries. Bouw een lijst met die waarden en geef die lijst vervolgens aan Counter.
Maak er nog geen zin van. Een Counter is bruikbare data die de eindopdracht later kan ordenen en presenteren. Counter onthoudt de volgorde waarin waarden verschijnen, maar die volgorde is geen afspraak over een alfabetisch rapport. Door die keuzes te scheiden wordt de uiteindelijke uitvoer deterministisch.
Wat moet count_categories(records) aan Counter meegeven?
Voeg de tweede functie toe aan hetzelfde werkruimtebestand. De editor voegt de nieuwe startdefinitie samen met je werk zonder de al voltooide days_between te vervangen.
Opdracht
Implementeer count_categories(records) in activity_report.py.
Elk record is een dictionary met de sleutels date, category en minutes.
Doorloop alle records en verzamel hun
category-waarde.Maak van die categorieën een
collections.Counteren geef die terug.Laat een lege lijst vanzelf een lege Counter opleveren.
Blijf gegevens teruggeven in plaats van een opgemaakte zin. De eindopdracht bepaalt hoe de aantallen worden getoond.