集與多集

集合是不同元素的無序集合。但有時我們希望使用無序的元素集合,這些元素不一定是獨特的,並跟蹤元素的多重性。

考慮這個例子:

>>> 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 提供了 collections 模組的 Counter 類(從 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 是一個字典,其中元素儲存為字典鍵,其計數儲存為字典值。和所有詞典一樣,它是一個無序的集合。