Python Counter dans collections : comptage efficace, mise à jour et opérations arithmétiques
Python Counter dans collections : comptage efficace, mise à jour et opérations arithmétiques
Qu'est-ce que Python Counter ?
Le Counter de Python est un conteneur spécialisé qui compte les occurrences de chaque élément dans un itérable. Il hérite de dict et stocke les éléments comme clés avec leurs comptes comme valeurs, en faisant un outil idéal pour le comptage style table de hachage.
Pourquoi utiliser Python Counter ?
- Il stocke les données dans une structure non ordonnée, de type table de hachage, avec les éléments comme clés et leurs comptes comme valeurs.
- Compter les éléments dans n'importe quel itérable — chaînes, listes, tuples ou dictionnaires — est simple.
- Les opérations arithmétiques intégrées (addition, soustraction, intersection, union) permettent des manipulations puissantes de type ensemble.
- Il peut agréger les comptes depuis d'autres instances
Counterde manière transparente.
Démarrer avec Counter
Importez la classe depuis collections :
from collections import Counter
Maintenant, vous pouvez passer n'importe quel itérable à Counter et recevoir un mapping de comptes.
Exemple – Compter une liste
liste1 = ['x','y','z','x','x','x','y','z'] print(Counter(liste1))
Sortie :
Counter({'x': 4, 'y': 2, 'z': 2})
Exemple – Compter une chaîne
ma_chaine = "Bienvenue sur les tutoriels Guru99 !" print(Counter(ma_chaine))
Sortie :
Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1, 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})
Exemple – Compter un dictionnaire
dict1 = {'x': 4, 'y': 2, 'z': 2}
print(Counter(dict1))
Sortie :
Counter({'x': 4, 'y': 2, 'z': 2})
Exemple – Compter un tuple
tuple1 = ('x','y','z','x','x','x','y','z')
print(Counter(tuple1))
Sortie :
Counter({'x': 4, 'y': 2, 'z': 2})
Initialisation, mise à jour et accès aux compteurs
Initialisation
print(Counter("Bienvenue sur les tutoriels Guru99 !")) # chaîne
print(Counter(['x','y','z','x','x','x','y','z'])) # liste
print(Counter({'x': 4, 'y': 2, 'z': 2})) # dict
print(Counter(('x','y','z','x','x','x','y','z'))) # tuple
# Compteur vide
_compteur = Counter()
Mise à jour
_compteur.update('Bienvenue sur les tutoriels Guru99 !')
print(_compteur)
Sortie :
Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1, 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})
Accéder aux comptes
print('%s : %d' % ('u', _compteur['u']))
for char in 'Guru':
print('%s : %d' % (char, _compteur[char]))
Sortie :
u : 3 G : 1 u : 3 r : 2 u : 3
Supprimer un élément
del _compteur['x'] print(_compteur)
Sortie :
Counter({'y': 2, 'z': 2})
Opérations arithmétiques
Counter supporte l'arithmétique de type ensemble. Les comptes positifs sont préservés ; les valeurs négatives sont ignorées dans le résultat.
compteur1 = Counter({'x': 4, 'y': 2, 'z': -2})
compteur2 = Counter({'x1': -12, 'y': 5, 'z': 4})
# Addition
print(compteur1 + compteur2)
# Soustraction
print(compteur1 - compteur2)
# Intersection
print(compteur1 & compteur2)
# Union
print(compteur1 | compteur2)
Sortie :
Counter({'y': 7, 'x': 4, 'z': 2})
Counter({'x1': 12, 'x': 4})
Counter({'y': 2})
Counter({'y': 5, 'x': 4, 'z': 4})
Méthodes clés
- elements() – Renvoie un itérateur sur les éléments avec comptes positifs.
- most_common([n]) – Renvoie les n éléments les plus courants comme liste de tuples (élément, compte).
- subtract(other) – Soustrait les comptes d'un autre Counter.
- update(other) – Ajoute les comptes d'un autre Counter.
Utiliser elements()
compteur = Counter({'x': 5, 'y': 2, 'z': -2, 'x1': 0})
for e in compteur.elements():
print(e)
Sortie :
x x x x x y y
Utiliser most_common()
compteur = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
print(compteur.most_common(2))
print(compteur.most_common())
Sortie :
[('y', 12), ('x', 5)]
[('y', 12), ('x', 5), ('x1', 0), ('z', -2)]
Utiliser subtract()
c1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
c2 = Counter({'x': 2, 'y': 5})
c1.subtract(c2)
print(c1)
Sortie :
Counter({'y': 7, 'x': 3, 'x1': 0, 'z': -2})
Utiliser update()
c1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
c2 = Counter({'x': 2, 'y': 5})
c1.update(c2)
print(c1)
Sortie :
Counter({'y': 17, 'x': 7, 'x1': 0, 'z': -2})
Réassigner des comptes
compteur = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
compteur['y'] = 20
print(compteur)
Sortie :
Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})
Obtenir et définir les comptes d'éléments
compteur = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
print(compteur['y'])
compteur['y'] = 20
compteur['y1'] = 10
print(compteur)
Sortie :
12
Counter({'y': 20, 'y1': 10, 'x': 5, 'x1': 0, 'z': -2})
Résumé
- Counter est une sous-classe de dictionnaire qui compte les éléments dans n'importe quel itérable.
- Il supporte le comptage efficace, les opérations arithmétiques et une suite de méthodes utilitaires.
- Cas d'usage courants : analyse de fréquences, génération d'histogrammes et agrégation de données.
- Pour la documentation complète, voir la doc Python Counter.
Python
- Maîtriser la méthode strip() de Python : Guide complet et exemples pratiques
- Maîtriser str.count() de Python : Compter caractères et sous-chaînes avec exemples
- Maîtriser les chaînes format() en Python avec exemples clairs
- Python len() : Guide pratique pour mesurer la longueur des objets
- Maîtriser la méthode String.find() de Python : Syntaxe, Exemples et Alternatives
- Maîtriser les fonctions lambda Python : exemples pratiques et bonnes pratiques
- Fonction Python round() expliquée avec exemples pratiques
- Maîtriser la fonction Python map() : syntaxe, exemples et bonnes pratiques
- Python timeit() : mesurer le temps d'exécution avec exemples pratiques