今天来了解一下python中的一个内建的集合模块。Collections。
This module implements specialized container datatypes providing alternatives to Python's general purpose built-in containers, dict, list, set, and tuple.
这个模块python内建的一个高性能容器数据类型,提供了许多有用的集合类。
主要介绍一下其中的:namedtuple,deque,Counter,OrderedDict,defaultdict。
1. Nametuple: 生成可以使用名字来访问元素内容的tuple子类。
python中提供了tuple(元组)。它表示一个不变的的集合。比如:我们表示一个点的坐标可以这么写(1,2)。表示x轴上1,y轴上2。
但是直接写(1,2),谁知道你要表示的是坐标呢?这样可以定义一个坐标Class来表示。这样有点小题大做。So:
可以用namedtuple。顾名思义:他是有名字的tuple。
这样就定义了一个point。
定义一个学生:
namedtuple提供了一系列对值的操作方法来方便使用:
namedtuple 转 字典(Orderdict 有序字典):
之后可以使用字典的方式来查询。
其他的还有_replace 用来替换值。
2. deque: 双端队列,可以快速的从另外一侧追加和推出对象。
使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈。
实现了list所有的方法之外。还有popleft 和 appendleft 方法来方便取出并移除头部的元素(其他语言pop 方法可能是取出并移除头部元素,python是列表最后一个)。
3. Counter: 计数器,主要用来计数。
可以用来统计字符串中各个字符的个数:
4. OrderedDict: 有序字典会按照各个key的插入顺序来排序。
5. defaultdict: 带有默认值的字典,使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict。