Zählen von Vorkommen in einer Python-Liste

8

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?

    
sammy_jacob 18.05.2011, 14:29
quelle

4 Antworten

19

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 .

    
unutbu 18.05.2011 14:35
quelle
6
%Vor%     
Winston Ewert 18.05.2011 14:37
quelle
2
%Vor%

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).

    
monojohnny 18.05.2011 14:37
quelle
1

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).

    
Eduardo Ivanec 18.05.2011 14:37
quelle

Tags und Links