Maison >développement back-end >Tutoriel Python >Comment compter efficacement les fréquences des éléments dans une liste Python non ordonnée ?

Comment compter efficacement les fréquences des éléments dans une liste Python non ordonnée ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-03 17:28:40680parcourir

How to Efficiently Count Element Frequencies in an Unordered Python List?

Obtention de la fréquence des éléments dans une liste non ordonnée

Considérons une liste non ordonnée telle que a = [5, 1, 2, 2, 4, 3, 1, 2, 3, 1, 1, 5, 2]. L'objectif est de déterminer la fréquence de chaque valeur unique dans la liste. Le résultat souhaité est similaire à b = [4, 4, 2, 1, 2], indiquant que la valeur 1 apparaît quatre fois, 2 apparaît quatre fois, 3 apparaît deux fois, 4 apparaît une fois et 5 apparaît deux fois.

En Python, une solution pratique pour cette tâche consiste à utiliser la classe collections.Counter. Dans Python 2.7 et versions ultérieures, cette classe simplifie le processus de comptage des occurrences d'éléments dans une collection non ordonnée :

import collections

a = [5, 1, 2, 2, 4, 3, 1, 2, 3, 1, 1, 5, 2]
counter = collections.Counter(a)

L'objet collections.Counter, compteur, contient le nombre de chaque valeur unique dans la liste a . Vous pouvez accéder aux décomptes en utilisant différentes méthodes :

  • counter.values() : renvoie une liste contenant les décomptes de chaque valeur unique.
  • counter.keys() : renvoie une liste contenant les valeurs uniques dans la liste.
  • counter.most_common(n) : renvoie une liste de tuples contenant les n valeurs les plus fréquentes et leurs counts.
  • dict(counter): Convertit l'objet Counter en un dictionnaire régulier avec des clés comme valeurs uniques et des valeurs comme leurs counts.

Pour obtenir les counts dans l'ordre spécifié dans à la question, vous pouvez parcourir les clés dans l'ordre trié :

[counter[x] for x in sorted(counter.keys())]

Si vous utilisez Python 2.6 ou une version antérieure, vous pouvez télécharger une implémentation de collections.Counter à partir du lien fourni et utilisez-le dans votre code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn