So zählen Sie Vorkommen in einer Liste in Python

Erfahren Sie, wie Sie das Vorkommen von Elementen in einer Python-Liste am besten zählen können. Vergleichen Sie die count()-Methode,collections.Counter und die Wörterbuchzählung.

Probieren Sie diese Lösung im Editor aus

Übersicht

Bei der Analyse von Datensätzen müssen Sie häufig das Vorkommen einzelner Elemente zählen. Beispielsweise können Sie zählen, wie viele Stimmen jeder Kandidat erhalten hat, Worthäufigkeiten in Textdateien zählen oder Duplikate in Transaktionsprotokollen identifizieren. Python bietet mehrere Tools zur Lösung dieses Problems, je nachdem, ob Sie eine einzelne Elementanzahl oder eine vollständige Häufigkeitszählung suchen.

Um die Häufigkeit eines einzelnen spezifischen Elements zu überprüfen, bietet der integrierte Listentyp eine „.count(value)“-Methode. Es durchläuft die Liste und gibt eine Ganzzahl zurück, die zählt, wie oft genau dieser Wert vorkommt. Obwohl es einfach und lesbar ist, ist der Aufruf von „.count()“ in einer Schleife, um die Anzahl aller Elemente zu ermitteln, äußerst ineffizient, da er in der Komplexität O(N^2) ausgeführt wird.

Um die Häufigkeiten aller Elemente gleichzeitig in einem einzigen Durchgang zu zählen, bietet die Standardbibliothek die Klasse „Counter“ innerhalb des Moduls „Collections“. Die Übergabe einer Liste an „Counter“ gibt ein wörterbuchähnliches Objekt zurück, das die Häufigkeiten aller Elemente in O(N)-Zeit darstellt. Es bietet auch Hilfsmethoden wie „most_common()“, um schnell die Top-Elemente abzurufen.

Code- und Ausführungsausgabe

Dieser Code demonstriert das Zählen einzelner Elemente in Listen und das Ermitteln der Gesamtzahl der Elemente mithilfe von „collections.Counter“.

count_occurrences.py
Versuchen Sie es im Editor
from collections import Counter

colors = ["red", "blue", "red", "green", "blue", "red"]

# Method 1: Count a single item using list.count()
red_count = colors.count("red")
print("Occurrences of 'red':", red_count)

# Method 2: Count all items using collections.Counter (Fast and powerful)
color_counts = Counter(colors)
print("\nCounter Object:", color_counts)
print("Count of 'blue':", color_counts["blue"])

# Getting the top most common items
print("Most common color:", color_counts.most_common(1))

# Method 3: Counting manually using a loop and a standard dictionary
manual_counts = {}
for item in colors:
    manual_counts[item] = manual_counts.get(item, 0) + 1
print("\nManual dict count:", manual_counts)
Terminal-Ausgabe
Occurrences of 'red': 3

Counter Object: Counter({'red': 3, 'blue': 2, 'green': 1})
Count of 'blue': 2
Most common color: [('red', 3)]

Manual dict count: {'red': 3, 'blue': 2, 'green': 1}

Schrittweise Umsetzung

  • Rufen Sie list_variable.count(value) auf, wenn Sie nur die Anzahl eines einzelnen bestimmten Elements in der Liste benötigen.
  • Importieren Sie „collections.Counter“ und übergeben Sie die Liste, um alle eindeutigen Elemente in einem einzigen optimierten Durchgang zu zählen.
  • Verwenden Sie die Methode .most_common(n) für ein Counter-Objekt, um die n häufigsten Elemente zu extrahieren.

Häufig gestellte Fragen

Was passiert, wenn ich in einem Collections.Counter-Objekt nach einem fehlenden Schlüssel suche?

Im Gegensatz zu einem Standardwörterbuch, das einen KeyError auslöst, gibt ein Counter-Objekt für fehlende Elemente 0 zurück, was null Vorkommnissen entspricht.

Wie hoch ist die zeitliche Komplexität von Counter im Vergleich zum Zählen in einer Schleife mit list.count()?

Der Zähler zählt alle Elemente in O(N) linearer Zeit, indem er die Liste einmal durchläuft. Das Durchlaufen von Listenelementen und das Aufrufen von list.count() benötigt O(N^2) quadratische Zeit, was bei großen Listen extrem langsam ist.

Verwandte Themen

Empfohlene Python-Ressourcen

Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.