[Python] Il ne s'agit pas seulement de compter les collections.

Aperçu

J'ai résumé la nature de collections.Counter qui obtient le nombre d'éléments de iterable. Outre le comptage, il a d'autres propriétés utiles que dict n'a pas, je voudrais donc l'utiliser activement.

Calcul

L'addition / soustraction et le calcul d'ensemble sont possibles. Les clés dont la valeur est inférieure ou égale à zéro sont automatiquement supprimées.

from collections import Counter

A = Counter('ab') # Counter({'a': 1, 'b': 1})
B = Counter('bc') # Counter({'c': 1, 'b': 1})
A + B # Counter({'b': 2, 'a': 1, 'c': 1})
A - B # Counter({'a': 1})
A & B # Counter({'b': 1})
A | B # Counter({'a': 1, 'b': 1, 'c': 1})

Méthode

Contrairement aux opérateurs, les clés avec des valeurs inférieures ou égales à zéro sont également conservées. ʻElements` renvoie uniquement les clés avec des valeurs positives.

from collections import Counter

A = Counter('ab')
B = Counter('bc')
C = Counter('ac')
C.update(A) # Counter({'a': 2, 'c': 1, 'b': 1})
A.subtract(B) # Counter({'a': 1, 'b': 0, 'c': -1})
A.most_common() # [('a', 1), ('b', 0), ('c', -1)]
sorted(C.elements()) # ['a', 'a', 'b', 'c']
sorted(A.elements()) # ['a']

référence

Si vous modifiez l'élément directement, la valeur inférieure à zéro est autorisée comme dans la méthode. Les références à des éléments inexistants renvoient 0 sans exception.

from collections import Counter

A = Counter('ab')
A['a'] += 2 # Counter({'a': 3, 'b': 1})
a['b'] -= 2 # Counter({'a': 3, 'b': -1})
A['c'] # 0

L'opérateur à terme unique est un raccourci pour les opérations sur le Counter () vide. Seules les valeurs positives ou négatives peuvent être extraites après le calcul pour chaque élément.

A # Counter({'a': 3, 'b': -1})
+A # Counter({'a': 3})
-A # Counter({'b': 1})

Recommended Posts

[Python] Il ne s'agit pas seulement de compter les collections.
Erreur Python non implémentée
Notation inclusive, pas seulement une liste
Comptez la liste à l'aide des collections.
Le rond de Python n'est pas strictement rond
filtre 404 introuvable dans Rollbar Python
La liste Python n'est pas une liste
N'a pas changé de Python 2 à 3
Python ne génère pas d'erreurs ou de sortie simplement parce que le retrait est mal aligné