集與多集
集合是不同元素的無序集合。但有時我們希望使用無序的元素集合,這些元素不一定是獨特的,並跟蹤元素的多重性。
考慮這個例子:
>>> 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
是一個字典,其中元素儲存為字典鍵,其計數儲存為字典值。和所有詞典一樣,它是一個無序的集合。