Gibt es eine Möglichkeit (in python), worin ich kann Sortieren einer Liste durch die Frequenz?
Beispielsweise
[1,2,3,4,3,3,3,6,7,1,1,9,3,2]
obigen Liste werden sortiert in der Reihenfolge der Häufigkeit der Werte, die zum erstellen der folgenden Liste, wo das Element mit der größten Frequenz ist an der front:
[3,3,3,3,3,1,1,1,2,2,4,6,7,9]
InformationsquelleAutor user2592835 | 2014-09-12
Ich denke, das wäre ein guter job für einen
collections.Counter
:Alternativ könnten Sie auch schreiben der zweiten Zeile, ohne eine lambda:
Wenn Sie mehrere Elemente mit der gleichen Frequenz und Sie darauf, dass diejenigen, die bleiben gruppiert, können wir tun, indem wir unsere Art Schlüssel gehören nicht nur die Grafen, sondern auch die Wert:
key=cnt.get, reverse=True
auch funktioniert.Ich war, liebäugelt mit dem hinzufügen, dass die Antwort. . . Vielleicht werde ich, da hast du darauf hingewiesen. . .
funktioniert nicht für dh [5, 7, 3, 3, 7, 5, 5, 5], Sie bekam [5, 5, 5, 5, 7, 3, 3, 7] statt [5, 5, 5, 5, 7, 7, 3, 3]
Sicher, das ist, weil das zählt für 7 und 3 sind die gleichen. OP nicht geben Sie eine order für diejenigen, die so ist dies immer noch konform. Wenn Sie möchten, stellen Sie sicher, dass Sie gruppiert sind, könnten Sie etwas tun, wie
key=lambda x: (counts[x], x)
so dass das zweite element im Tupel bricht die "Band".InformationsquelleAutor mgilson
key
wird O(n), wobei mitcollections.Counter
es ist O(1), mit einem einzigen O(n) - Aufruf zum erstellen desCounter
(ich wusste nicht downvote, nur hinweisen wollte ist die Effizienz-Differenz).Ich verstehe immer noch nicht, warum es downvoted
Siehe mein edit. War mir nicht.
Ich kann nicht sehen, Bearbeiten
Es ist ein oneliner, aber ich Schätze seine Algorithmische Komplexität ist O(n^2). Mit
collections.Counter
vermeidet das zählen von vorkommen der einzelnen Elemente für jedes Element in der Liste.InformationsquelleAutor Padraic Cunningham
Wurde, üben diese einen für Spaß. Diese Lösung weniger Zeit Komplexität.
InformationsquelleAutor gautamaggarwal
InformationsquelleAutor Anonymous
Können Sie unter Methoden. Es ist geschrieben in einfaches python.
InformationsquelleAutor AVVD