一、实验目的
- Counter 类
- defaultdict 类
- namedtuple 类
二、知识要点
首先我们通过:1
import collections
导入Collections
模块,这个模块实现了一些很好的数据结构,能够解决各种实际问题。
1.Counter类
Counter
是一个有助于 hashable
对象计数的 dict 子类。它是一个无序的集合,其中 hashable
对象的元素存储为字典的键,它们的计数存储为字典的值,计数可以为任意整数,包括零和负数。
2.defaultdict类
defaultdict
是内建 dict类
的子类,它覆写了一个方法并添加了一个可写的实例变量。其余功能与字典相同。defaultdict()
第一个参数提供了 default_factory
属性的初始值,默认值为None
,default_factory
属性值将作为字典的默认数据类型。所有剩余的参数与字典的构造方法相同,包括关键字参数。同样的功能使用 defaultdict
比使用 dict.setdefault
方法快。
3.namedtuple类
命名元组有助于对元组每个位置赋予意义,并且让我们的代码有更好的可读性和自文档性。你可以在任何使用元组地方使用命名元组。
三、实验内容
1.统计文件中某些单词的出现次数
- 代码:
1 | from collections import Counter |
- 结果:
1 | [('the', 277), ('of', 160), ('or', 146), ('and', 129), ('in', 112), ('to', 97), ('software', 95), ('this', 95), ('any', 76), ('1', 71)] |
- 函数解释:
re.findall:
对 string 返回一个不重复的 pattern 的匹配列表, string 从左到右进行扫描,匹配按找到的顺序返回。如果样式里存在一到多个组,就返回一个组合列表;就是一个元组的列表(如果样式里有超过一个组合的话)。空匹配也会包含在结果里。
- 代码:
1 | from collections import Counter |
- 结果:
1 | ['a', 'a', 'a', 'a', 'b', 'b'] |
2.使用defaultdict
创建列表
- 代码:
1 | from collections import defaultdict |
- 结果:
1 | dict_items([('zz', [99]), ('wyf', [98]), ('wcc', [745]), ('yxy', [666])]) |
3.使用namedtuple
定义命名元组
- 代码:
1 | from collections import namedtuple |
- 结果:
1 | 10 20 |
四、实验结果
1.学生教师操作
- 代码:
1 | import sys |
- 结果:
1 | (venv) F:\NewPython\13>python teacher_grade.py teacher ABCCBABAAD |
下一篇:14.PEP8代码风格指南
上一篇:12.模块
目 录:Python学习