集与多集
集合是不同元素的无序集合。但有时我们希望使用无序的元素集合,这些元素不一定是独特的,并跟踪元素的多重性。
考虑这个例子:
>>> 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
是一个字典,其中元素存储为字典键,其计数存储为字典值。和所有词典一样,它是一个无序的集合。