Ich habe eine Liste von ganzen Zahlen; zum Beispiel:
%Vor% Ich versuche eine Liste der drei Elemente in l
mit der höchsten Anzahl von Vorkommen in absteigender Reihenfolge der Häufigkeit zu erstellen. In diesem Fall möchte ich die Liste [1, 4, 2]
, weil 1
am häufigsten in l
(vier Mal) auftritt, 4
ist die nächste mit drei Instanzen und dann 2
mit zwei. Ich möchte nur die ersten drei Ergebnisse, also macht 3
(mit nur einer Instanz) die Liste nicht.
Wie kann ich diese Liste generieren?
Verwenden Sie collections.Counter :
%Vor% collections.Counter
wurde in Python 2.7 eingeführt. Wenn Sie eine ältere Version verwenden, können Sie hier die Implementierung verwenden .
Dies sollte die häufigsten Elemente in "l" ausdrucken: Sie müssten auf die ersten drei beschränken. Seien Sie vorsichtig, wenn Sie dort das inverted_dict verwenden (dh die Schlüssel und Werte werden vertauscht): Dies führt zu einem Überschreiben von Werten (wenn zwei Elemente identische Zählungen haben, wird nur eins in das Diktat zurückgeschrieben).
Ohne Sammlungen zu verwenden:
%Vor%In der ersten Zeile werden alle Originalartikel nach Anzahl sortiert.
Die for-Schleife ist notwendig, um zu unifizieren, ohne die Reihenfolge zu verlieren (es kann einen besseren Weg geben).
Tags und Links python