Python集与多集

示例

集是不同元素的无序集合。但是有时候我们想使用不一定是不同的元素的无序集合并跟踪元素的多重性。

考虑以下示例:

>>> 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版开始):

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

Counter是一个字典,其中元素存储为字典键,元素的计数存储为字典值。和所有词典一样,它是一个无序集合。