Die Standardbibliothek gibt es bereits · Übung
Mit Counter zählen
Die zweite Aufgabe der Übersicht ist, Aktivitätskategorien zu zählen. Du könntest ein Dictionary aufbauen und jeweils prüfen, ob eine Kategorie bereits vorkam. Dieser Code ist möglich, aber die Aufgabe ist häufig genug, um einen Namen in der Standardbibliothek zu haben: Counter.
Der Konstruktor collections.Counter akzeptiert ein iterierbares Objekt mit hashbaren Werten. Er gibt eine Dictionary-Unterklasse zurück, deren Werte Anzahlen sind:
Die fehlende Kategorie gibt 0 aus. Ein gewöhnlicher Dictionary-Zugriff würde KeyError auslösen. Dieser Unterschied gehört zum öffentlichen Vertrag von Counter und ist ein Grund, warum es zu dieser Aufgabe passt.
Zählen und Darstellung trennen
Unsere Datensätze sind Dictionarys:
{"date": "2026-08-03", "category": "walk", "minutes": 35}
Counter braucht die Kategoriewerte, nicht die ganzen Dictionarys. Erstelle eine Liste dieser Werte und übergib die Liste dann an Counter.
Formatiere noch keinen Satz. Ein Counter ist ein nützlicher Datenwert, den das Abschlussprojekt später ordnen und darstellen kann. Counter merkt sich die Reihenfolge des ersten Auftretens. Diese Reihenfolge ist aber keine Vereinbarung über einen alphabetisch sortierten Bericht. Diese Entscheidungen getrennt zu halten macht die endgültige Ausgabe deterministisch.
Was sollte count_categories(records) an Counter übergeben?
Ergänze die zweite Funktion in derselben Datei des Arbeitsbereichs. Der Editor fügt die neue Funktionsvorlage ein, ohne deine bereits fertige Arbeit an days_between zu ersetzen.
Aufgabe
Implementiere count_categories(records) in activity_report.py.
Jeder Datensatz ist ein Dictionary mit den Schlüsseln date, category und minutes.
Gehe jeden Datensatz durch und sammle seinen Wert für
category.Erstelle aus diesen Kategorien einen
collections.Counterund gib ihn zurück.Bei einer leeren Liste soll auf natürliche Weise ein leerer Counter zurückgegeben werden.
Gib weiterhin Daten statt eines formatierten Satzes zurück. Das Abschlussprojekt entscheidet, wie die Anzahlen erscheinen sollen.