Recherche de site Web

Compteur Python - Compte des collections Python


La classe Counter de Python fait partie du module Collections. Counter est une sous-classe de Dictionary et est utilisée pour suivre les éléments et leur nombre.

Compteur Python

Le compteur est une collection non ordonnée où les éléments sont stockés comme des clés de Dict et leur nombre comme valeur dict. Le compte des éléments du compteur 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 destinées à être des nombres, nous pouvons également stocker d'autres objets.

Créer un objet compteur Python

Nous pouvons créer un compteur vide ou commencer avec certaines valeurs initiales aussi.

from collections import Counter

empty Counter
counter = Counter()
print(counter)  # Counter()

Counter with initial values
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, une chaîne littérale et une liste peuvent également être utilisées pour créer un objet Counter.

Iterable as argument for Counter
counter = Counter('abc')
print(counter)  # Counter({'a': 1, 'b': 1, 'c': 1})

List as argument to Counter
words_list = ['Cat', 'Dog', 'Horse', 'Dog']
counter = Counter(words_list)
print(counter)  # Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})

Dictionary as argument to 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 utiliser des données non numériques pour les valeurs de compteur également, mais cela défaillirait l'objectif de la classe Counter.

Counter works with non-numbers too
special_counter = Counter(name='Pankaj', age=20)
print(special_counter)  # Counter({'name': 'Pankaj', 'age': 20})

Méthodes de compteur Python

Examinons les méthodes de la classe Counter et d'autres opérations que nous pouvons effectuer dessus.

Obtenir le compte des éléments

getting count
counter = Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
countDog = counter['Dog']
print(countDog)  # 2

Si nous essayons d'obtenir le compte d'une clé inexistante, cela renverra 0 et ne lancera pas d'erreur KeyError.

getting count for non existing key, don't cause KeyError
print(counter['Unicorn'])  # 0

Définir le nombre d'éléments

Nous pouvons également définir le nombre d'éléments existants dans le compteur. Si l'élément n'existe pas, il est alors ajouté au compteur.

counter = Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
setting count
counter['Horse'] = 0
print(counter)  # Counter({'Dog': 2, 'Cat': 1, 'Horse': 0})

setting count for non-existing key, adds to Counter
counter['Unicorn'] = 1
print(counter)  # Counter({'Dog': 2, 'Cat': 1, 'Unicorn': 1, 'Horse': 0})

Supprimer un élément du compteur

Nous pouvons utiliser del pour supprimer un élément de l'objet compteur.

Delete element from 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 comptes 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 nombre est de 2. Les autres éléments seront ignorés car ils n'ont pas de compte positif. Un compteur est une collection non ordonnée, donc les éléments sont retournés dans un ordre quelconque.

le plus commun(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é à partir des éléments les plus courants jusqu'aux éléments les moins courants. Nous pouvons utiliser le découpage pour obtenir les éléments les moins courants de 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)]

soustraire() et mettre à jour()

La méthode subtract() du compteur est utilisée pour soustraire les comptes d'éléments d'un autre compteur. La méthode update() est utilisée pour ajouter des comptes 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 avec Counter en Python

Nous pouvons également effectuer des opérations arithmétiques sur les Compteurs, tout comme sur les nombres. Cependant, seuls les éléments ayant un compte positif sont retournés avec ces opérations.

arithmetic operations
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

Examinons quelques extraits de code pour des opérations diverses que nous pouvons effectuer sur des objets Counter.

counter = Counter({'a': 3, 'b': 3, 'c': 0})
miscellaneous examples
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)])

remove 0 or negative count elements
counter = Counter(a=2, b=3, c=-1, d=0)
counter = +counter
print(counter)  # Counter({'b': 3, 'a': 2})

clear all elements
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 : Documentation Python