Pythonic façon à effectuer une itération sur une collection.Counter() de l'instance dans l'ordre décroissant?
En Python 2 (2.7, pour être plus précis), je veux effectuer une itération sur une collection.Contre exemple en descendant compter de la commande.
>>> import collections
>>> c = collections.Counter()
>>> c['a'] = 1
>>> c['b'] = 999
>>> c
Counter({'b': 999, 'a': 1})
>>> for x in c:
print x
a
b
Dans l'exemple ci-dessus, il apparaît que les éléments sont itérées dans l'ordre où ils ont été ajoutés à la Contre exemple.
J'aimerais itérer sur la liste de la plus haute à la plus basse. Je vois que la représentation de chaîne de Contre cette, demandais juste si il y a un moyen conseillé de le faire.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez effectuer une itération sur
c.most_common()
pour obtenir les éléments dans l'ordre souhaité. Voir aussi la la documentation deCompteur.most_common()
.Exemple:
Voici l'exemple d'itérer le Compteur en Python collections:
Votre problème a été résolu pour simplement retourner ordre décroissant mais ici, c'est comment le faire de façon générique. Dans le cas où quelqu'un vient ici à partir de Google, voici comment j'ai eu à le résoudre. Fondamentalement, ce que vous avez ci-dessus retourne les clés du dictionnaire à l'intérieur des collections.Counter(). Pour obtenir les valeurs que vous avez seulement besoin de passer de la touche de retour pour le dictionnaire de la sorte:
J'ai eu plus de problème spécifique où j'ai eu de mots et je voulais filtrer les basses fréquences proches. L'astuce ici est de faire une copie des collections.Counter() ou vous obtiendrez "RuntimeError: dictionnaire changé de taille au cours de l'itération" lorsque vous essayez de les supprimer à partir du dictionnaire.