集与多集

集合是不同元素的无序集合。但有时我们希望使用无序的元素集合,这些元素不一定是独特的,并跟踪元素的多重性。

考虑这个例子:

>>> 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 是一个字典,其中元素存储为字典键,其计数存储为字典值。和所有词典一样,它是一个无序的集合。