Ich brauch mal eine kurze Nachhilfe in Python:
Ich habe eine Liste, da möchte ich zählen, wie oft ein Wert vorkommt,
dafür gibt es Counter, das habe ich kapiert
1
from collections import Counter
2
liste = [31, 55, 1, 78, 31, 2, 77, 31, 55]
3
liste = Counter(liste)
4
print(liste)
Das Ergebnis sieht so aus, die häufigste ist zuerst, passt (die Werte
müssen nicht sortiert sein, nur die Häufigkeiten)
1
Counter({31: 3, 55: 2, 1: 1, 78: 1, 2: 1, 77: 1})
Wie kann ich nun die Elemente von Counter ausgeben, z.B. so formatiert
Stephan S. schrieb:> Die Liste ist noch ok wenn ich sie als Liste ausgebe (1. Zeile des> Ergebnisses), durch items() gerät sie drucheinander
Verstehe ich nicht. Schreib bitte einmal auf, was Du erhälst, und
einmal, was Du erwartest. Danke.
erstellte Liste ist nicht nach Häufigkeit sortiert. Die Elemente
erscheinen in der Reihenfolge, in der sie in der Ursprungsliste das
erste Mal auftauchen.
mit
1
fork,vinliste.items():
2
print(f'{v:3d}{k:3s}')
erhälst Du die Reihenfolge, wie sie in der Liste vorliegt.
mit
1
print(liste)
wird die Liste bei der Ausgabe durch die print-Funktion nach Häufigkeit
sortiert
Um in beiden Fällen die identische Reihenfolge zu erhalten wirst Du die
Liste nach der Häufigkeit sortieren müssen und zwar mit dem selben
Sortieralgorithmus, den auch die print-Funktion nutzt. Bei Verwendung
eines anderen Algorithmus kann die Reihenfolge der Elemente mit gleicher
Häufigkeit unterschiedlich sein.
Yalu X. schrieb:> Stephan S. schrieb:>> Das klappt mit meinem o.g. Beispiel, bringt aber die Sortierung>> durcheinander.>> Ersetze items() durch most_common():>>
1
> for k,v in liste.most_common():
2
> print(f'{v} {k:2d}')
3
>
PERFEKT, DANKE ! Das war's was ich wollte, geht auch ratz-fatz mit mit
meinen echten Daten, das sind fast 4 Millionen Daten mit knapp 170.000
verschiedenen Werten.