Наборы против мультимножеств

Наборы - это неупорядоченные наборы отдельных элементов. Но иногда мы хотим работать с неупорядоченными коллекциями элементов, которые не обязательно различны и отслеживают множественность элементов.

Рассмотрим этот пример:

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

 

При сохранении строки 'a' , 'b' , 'b' , 'c' в структуру набора данных , мы потеряли информацию о том , что 'b' происходит дважды. Конечно, сохранение элементов в списке сохранит эту информацию

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

 

но структура данных списка вводит дополнительный ненужный порядок, который замедляет наши вычисления.

Для реализации мультинаборы Python предоставляет Counter класса из collections модуля (начиная с версии 2.7):

>>> из коллекции импортов Counter >>> counterA = Counter (['a', 'b', 'b', 'c']) >>> CounterA Counter ({'b': 2, 'a': 1 , 'c': 1})

Counter представляет собой словарь , где где элементы хранятся в виде ключей словаря и их счетчики хранятся в виде значений словаря. И, как и все словари, это неупорядоченная коллекция.