La classe Python Counter fait partie du module Collections. Counter est une sous-classe de Dictionnaire et est utilisée pour suivre les éléments et leur nombre.
Python Counter
Counter est une collection non ordonnée où les éléments sont stockés comme des clés Dict
et leur nombre comme valeur de dictionnaire. Le nombre d’éléments de Counter peut être des entiers positifs, nuls ou négatifs. Cependant, il n’y a aucune restriction sur ses clés et valeurs. Bien que les valeurs soient censées être des nombres, nous pouvons également stocker d’autres objets.
Création d’un objet Python Counter
Nous pouvons créer un Counter vide ou commencer avec quelques valeurs initiales également.
from collections import Counter
# Counter vide
counter = Counter()
print(counter) # Counter()
# Counter avec des valeurs initiales
counter = Counter(['a', 'a', 'b'])
print(counter) # Counter({'a': 2, 'b': 1})
counter = Counter(a=2, b=3, c=1)
print(counter) # Counter({'b': 3, 'a': 2, 'c': 1})
Nous pouvons également utiliser n’importe quel itérable comme argument pour créer un objet Counter. Ainsi, littéral de chaîne et Liste peuvent également être utilisés pour créer un objet Counter.
# Itérable comme argument pour Counter
counter = Counter('abc')
print(counter) # Counter({'a': 1, 'b': 1, 'c': 1})
# Liste comme argument pour Counter
words_list = ['Cat', 'Dog', 'Horse', 'Dog']
counter = Counter(words_list)
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
# Dictionnaire comme argument pour Counter
word_count_dict = {'Dog': 2, 'Cat': 1, 'Horse': 1}
counter = Counter(word_count_dict)
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
Comme je l’ai mentionné ci-dessus, nous pouvons également utiliser des données non numériques pour les valeurs de comptage, mais cela va à l’encontre du but de la classe Counter.
# Counter fonctionne également avec des valeurs non numériques
special_counter = Counter(name='Pankaj', age=20)
print(special_counter) # Counter({'name': 'Pankaj', 'age': 20})
Méthodes Counter Python
Examinons les méthodes de la classe Counter et quelques autres opérations que nous pouvons effectuer avec elle.
Obtenir le nombre d’éléments
# obtenir le nombre
counter = Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
countDog = counter['Dog']
print(countDog) # 2
Si nous essayons d’obtenir le nombre d’une clé qui n’existe pas, il renverra 0 sans générer d’erreur KeyError
.
# obtenir le nombre pour une clé qui n'existe pas, ne provoque pas d'erreur KeyError
print(counter['Unicorn']) # 0
Définir le nombre d’éléments
Nous pouvons également définir le nombre d’occurrences d’un élément existant dans le compteur. Si l’élément n’existe pas, il est ajouté au compteur.
counter = Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
# définir le nombre
counter['Horse'] = 0
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 0})
# définir le nombre for non-existing key, adds to Counter
counter['Unicorn'] = 1
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Unicorn': 1, 'Horse': 0})
Suppression d’un élément de Counter
Nous pouvons utiliser del
< pour supprimer un éldiément de l’yobjet counter.
# Supprimer un élément de Counter
del counter['Unicorn']
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 0})
elements()
Cette méthode renvoie la liste des éléments dans le compteur. Seuls les éléments avec des comptages positifs sont renvoyés.
counter = Counter({'Dog': 2, 'Cat': -1, 'Horse': 0})
# elements()
elements = counter.elements() # doesn't return elements with count 0 or less
for value in elements:
print(value)
Le code ci-dessus affichera « Chien » deux fois car son comptage est de 2. Les autres éléments seront ignorés car ils n’ont pas de comptage positif. Counter est une collection non ordonnée, donc les éléments sont renvoyés sans ordre particulier.
most_common(n)
Cette méthode renvoie les éléments les plus courants du compteur. Si nous ne fournissons pas de valeur pour ‘n’, alors un dictionnaire trié est renvoyé, allant des éléments les plus courants aux moins courants. Nous pouvons utiliser le slicing pour obtenir les éléments les moins courants dans ce dictionnaire trié.
counter = Counter({'Dog': 2, 'Cat': -1, 'Horse': 0})
# most_common()
most_common_element = counter.most_common(1)
print(most_common_element) # [('Dog', 2)]
least_common_element = counter.most_common()[:-2:-1]
print(least_common_element) # [('Cat', -1)]
subtract() et update()
La méthode subtract()
de Counter est utilisée pour soustraire les comptages d’un autre compteur. La méthode update()
est utilisée pour ajouter des comptages à partir d’un autre compteur.
counter = Counter('ababab')
print(counter) # Counter({'a': 3, 'b': 3})
c = Counter('abc')
print(c) # Counter({'a': 1, 'b': 1, 'c': 1})
# subtract
counter.subtract(c)
print(counter) # Counter({'a': 2, 'b': 2, 'c': -1})
# update
counter.update(c)
print(counter) # Counter({'a': 3, 'b': 3, 'c': 0})
Opérations arithmétiques sur les compteurs Python
Nous pouvons également effectuer certaines opérations arithmétiques sur les compteurs, tout comme avec des nombres. Cependant, seuls les éléments avec un compte positif sont retournés avec ces opérations.
# opérations arithmétiques
c1 = Counter(a=2, b=0, c=-1)
c2 = Counter(a=1, b=-1, c=2)
c = c1 + c2 # return items having +ve count only
print(c) # Counter({'a': 3, 'c': 1})
c = c1 - c2 # keeps only +ve count elements
print(c) # Counter({'a': 1, 'b': 1})
c = c1 & c2 # intersection min(c1[x], c2[x])
print(c) # Counter({'a': 1})
c = c1 | c2 # union max(c1[x], c2[x])
print(c) # Counter({'a': 2, 'c': 2})
Opérations diverses sur le compteur Python
Jetons un coup d’œil à quelques extraits de code pour les opérations diverses que nous pouvons effectuer sur les objets Counter.
counter = Counter({'a': 3, 'b': 3, 'c': 0})
# exemples divers
print(sum(counter.values())) # 6
print(list(counter)) # ['a', 'b', 'c']
print(set(counter)) # {'a', 'b', 'c'}
print(dict(counter)) # {'a': 3, 'b': 3, 'c': 0}
print(counter.items()) # dict_items([('a', 3), ('b', 3), ('c', 0)])
# supprimer les éléments avec un compte de 0 ou négatif
counter = Counter(a=2, b=3, c=-1, d=0)
counter = +counter
print(counter) # Counter({'b': 3, 'a': 2})
# effacer tous les éléments
counter.clear()
print(counter) # Counter()
C’est tout pour la classe Counter de Python.
Vous pouvez télécharger le code d’exemple complet depuis mon Dépôt GitHub.
Référence : Python Docs
Source:
https://www.digitalocean.com/community/tutorials/python-counter-python-collections-counter