La colonne
collections.Counter
peut être utilisé pour compter les objets hachables, ou utilisé comme multiset - un multiset signifie que les éléments de l'ensemble peuvent apparaître plusieurs fois 1. Le type
collections.Counter est similaire à bags
ou multisets2
dans d'autres langages de programmation.
(1) Utilisation de base
counter = collections.Counter(['生物', '印记', '考古学家', '生物', '枣', '印记']) logging.info('counter -> %s', counter) counter.update(['化石', '果实', '枣', '生物']) logging.info('counter -> %s', counter) most = counter.most_common(2) logging.info('most -> %s', most)
Résultats d'exécution :
INFO - counter -> Counter({'生物': 2, '印记': 2, '考古学家': 1, '枣': 1}) INFO - counter -> Counter({'生物': 3, '印记': 2, '枣': 2, '考古学家': 1, '化石': 1, '果实': 1}) INFO - most -> [('生物', 3), ('印记', 2)]
Dans l'exemple de programme, utilisez d'abord collections.Counter() pour initialiser le compteur object, this Le nombre actuel d'occurrences de mots a été calculé dans l'objet compteur ; collections.Counter()
Le paramètre d'entrée est un objet itérable, comme la liste ici. Utilisez ensuite la méthode update()
pour transmettre la nouvelle liste de mots. À ce moment, l'objet compteur mettra à jour le compteur et effectuera des calculs cumulatifs. Enfin, utilisez la méthode most_common()
de l'objet compteur pour imprimer la liste des mots. les 2 premiers mots.
(2) Opérations d'ensemble
Le type collections.Counter prend également en charge les opérations d'ensemble.
a = collections.Counter({'老虎': 3, '山羊': 1}) b = collections.Counter({'老虎': 1, '山羊': 3}) logging.info('a -> %s', a) logging.info('b -> %s', b) logging.info('a+b -> %s', a + b) logging.info('a-b -> %s', a - b) logging.info('a&b -> %s', a & b) logging.info('a|b -> %s', a | b)
Résultat de l'exécution :
INFO - a -> Counter({'老虎': 3, '兔子': 2, '山羊': 1}) INFO - b -> Counter({'山羊': 3, '老虎': 1}) INFO - a+b -> Counter({'老虎': 4, '山羊': 4, '兔子': 2}) INFO - a-b -> Counter({'老虎': 2, '兔子': 2}) INFO - a&b -> Counter({'老虎': 1, '山羊': 1}) INFO - a|b -> Counter({'老虎': 3, '山羊': 3, '兔子': 2})
A et b dans l'exemple sont tous deux des objets de type Counter. Cela démontre également que l'objet Counter peut être initialisé à l'aide de paires clé-valeur
a+b représente l'opération d'union, y compris tous les éléments ; 🎜>a-b représente l'opération de différence ;
a&b représente l'opération d'intersection
a|b est spécial, incluant d'abord toutes les clés Entrez ; , puis comparez la valeur maximale de la clé correspondante dans les deux objets comme valeur du nouvel objet. Par exemple, si l'objet a contient « tigre » : 3, l'objet b contient « tigre » : 1, alors l'objet final obtenu est « tigre » : 3.
(3) Comptage de valeurs positives et négatives
c = collections.Counter(x=1, y=-1) logging.info('+c -> %s', +c) logging.info('-c -> %s', -c)
Résultat de l'exécution :
INFO - +c -> Counter({'x': 1}) INFO - -c -> Counter({'y': 1})
En utilisant simplement
comme préfixe d'un objet de type Compteur, un filtrage des comptes positifs et négatifs peut être implémenté. Cette conception de Python est très élégante.+/-
Recommandations d'apprentissage gratuites associées :
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!