Python Language Ensembles versus multisets


Exemple

Les ensembles sont des ensembles non ordonnés d'éléments distincts. Mais parfois, nous voulons travailler avec des ensembles non ordonnés d'éléments qui ne sont pas nécessairement distincts et garder une trace des multiplicités des éléments.

Considérez cet exemple:

>>> setA = {'a','b','b','c'}
>>> setA
set(['a', 'c', 'b'])

En enregistrant les chaînes 'a' , 'b' , 'b' , 'c' dans une structure de données définie, nous avons perdu les informations sur le fait que 'b' se produit deux fois. Enregistrer les éléments dans une liste conserverait bien sûr cette information

>>> listA = ['a','b','b','c']
>>> listA
['a', 'b', 'b', 'c']

mais une structure de données de liste introduit un ordre supplémentaire inutile qui ralentira nos calculs.

Pour implémenter des multisets, Python fournit la classe Counter partir du module de collections (à partir de la version 2.7):

Python 2.x 2.7
>>> from collections import Counter
>>> counterA = Counter(['a','b','b','c'])
>>> counterA
Counter({'b': 2, 'a': 1, 'c': 1})

Counter est un dictionnaire où les éléments sont stockés en tant que clés de dictionnaire et leurs comptes sont stockés en tant que valeurs de dictionnaire. Et comme tous les dictionnaires, c'est une collection non ordonnée.