Python教程:Collections模块Counter类详解
178 浏览量
更新于2024-08-28
收藏 107KB PDF 举报
"这篇文章主要介绍了Python的Collections模块中的Counter容器类,它是一个用于计数序列中元素出现次数的工具。"
在Python编程中,`collections`模块提供了多种高级数据结构,如`OrderedDict`、`namedtuple`、`Counter`等。其中,`Counter`是一个特殊的字典子类,它允许我们方便地对序列中的元素进行计数。这个类在Python 2.7版本中被引入,特别适合处理元素频率统计的问题。
**2.Counter类**
`Counter`类的核心功能是存储元素及其出现的次数。它的工作方式类似于字典,但自动处理不存在的键(初始计数为0)。创建`Counter`对象有以下几种方式:
1. **空Counter** - 只需调用`Counter()`即可创建一个空的计数器。
2. **从可迭代对象创建** - 提供一个包含各种元素的序列,例如字符串、列表或元组,`Counter`会计算每个元素的出现次数。
3. **从字典创建** - 如果字典的键是元素,值是对应的计数,可以直接使用该字典初始化`Counter`。
**2.1 创建**
```python
>>> c = Counter() # 创建空Counter
>>> c = Counter('gallahad') # 从字符串创建,'g'出现1次,'a'出现3次,'l'出现2次,'h'和'd'各出现1次
>>> c = Counter({'a': 4, 'b': 2}) # 从字典创建
```
**2.2 计数值的访问与缺失的键**
计数器可以通过键来访问计数值,如果键不存在,返回的是0。
```python
>>> c['a'] # 输出元素'a'的计数
4
>>> c['x'] # 'x'不存在,返回0
0
```
**2.3 计数器的更新**
`update()`方法用于合并计数器或者更新计数器中的计数值,而`subtract()`则用来减少指定元素的计数。
```python
>>> c.update('hello') # 增加新元素计数或更新已有元素
>>> c.subtract(['a', 'b']) # 减少'a'和'b'的计数
```
**2.4 键的删除**
由于`Counter`是字典的子类,可以使用`del`关键字删除键,但不会删除计数为0的键。
```python
>>> del c['b']
```
**2.5 elements()**
`elements()`方法返回一个迭代器,按计数顺序生成元素,重复次数与计数对应。
```python
>>> for elem in c.elements(): # 遍历元素
... print(elem)
...
a a a a l l h d
```
**2.6 most_common([n])**
`most_common([n])`返回一个列表,包含`(element, count)`元组,按计数降序排列。如果不提供参数`n`,则返回所有元素。
```python
>>> c.most_common()
[('a', 4), ('l', 2), ('h', 1), ('d', 1)]
```
**2.7 fromkeys()**
`Counter.fromkeys()`创建一个新的`Counter`,其中所有键的计数都为1。
```python
>>> c = Counter.fromkeys(['a', 'b', 'c'], 2) # 所有键计数为2
>>> c
Counter({'a': 2, 'b': 2, 'c': 2})
```
**2.8 浅拷贝copy**
`copy()`方法生成计数器的浅拷贝,只复制计数器本身,不复制其存储的元素。
```python
>>> c_copy = c.copy()
```
**2.9 算术和集合操作**
`Counter`支持与其它`Counter`或可迭代对象进行算术运算,如`+`、`-`、`*`以及集合操作如`|`、`&`、`^`。
```python
>>> c1 = Counter('abc')
>>> c2 = Counter('bde')
>>> c1 + c2 # 合并计数
Counter({'b': 2, 'a': 1, 'c': 1, 'd': 1, 'e': 1})
>>> c1 - c2 # 减去c2中有的元素计数
Counter({'a': 1, 'c': 1})
```
**4. 应用实例**
`Counter`在多种场景下都很有用,比如计算文本中单词的频率、分析数据集中的元素分布等。它可以用于构建多元集合(MultiSets),计算概率质量函数(probability mass function),甚至进行贝叶斯统计。
`Counter`是Python中处理元素计数问题的一个强大工具,它的易用性和高效性使得在处理大量数据时能够更加便捷。了解和掌握`Counter`的使用,能够显著提升Python编程的效率。
2020-12-25 上传
2023-09-13 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-11-20 上传
weixin_38610717
- 粉丝: 6
- 资源: 954