Trier la liste de fréquence en python
Est-il de toute façon (en python), dans lequel je peux trier une liste par sa fréquence?
Par exemple,
[1,2,3,4,3,3,3,6,7,1,1,9,3,2]
la liste ci-dessus doit être trié dans l'ordre de la fréquence de ses valeurs afin de créer la liste suivante, où l'élément avec la plus grande fréquence est placé à l'avant:
[3,3,3,3,3,1,1,1,2,2,4,6,7,9]
OriginalL'auteur user2592835 | 2014-09-12
Vous devez vous connecter pour publier un commentaire.
Je pense que ce serait un bon travail pour un
collections.Counter
:Alternativement, vous pouvez écrire le deuxième ligne sans lambda:
Si vous avez plusieurs éléments avec la même fréquence et vous de soins que ceux-ci restent groupés, nous pouvons le faire qu'en changeant notre clé de tri afin d'inclure non seulement les chiffres, mais aussi la valeur:
OriginalL'auteur mgilson
key
être O(n), où aveccollections.Counter
il est O(1), avec un seul O(n) appels à construire leCounter
(je n'ai pas downvote, je voulais juste souligner l'efficacité de différence).C'est un oneliner, mais je suppose que sa complexité algorithmique est O(n^2). À l'aide de
collections.Counter
évite le comptage des occurrences de chaque élément pour chaque élément dans la liste.OriginalL'auteur Padraic Cunningham
A été la pratique de ce un pour le plaisir. Cette solution utilise moins de temps à la complexité.
OriginalL'auteur gautamaggarwal
OriginalL'auteur Anonymous
Vous pouvez utiliser les méthodes ci-dessous. Il est écrit dans un langage simple python.
OriginalL'auteur AVVD