collections模块
提供了一些额外的数据类型,供我们使用。
namedtuple:命名元组
from collections import namedtuple # 命名元组 namedtuple(typename, field_names) typename元组的名称 field_names元组中元素的名称 ret = namedtuple('zxc', ['x', 'y']) print(ret) # <class '__main__.zxc'> p = ret(1, 2) # 按顺序添加元素 p1 = ret(x=3, y=4) # 按名称添加元素 print(p) # zxc(x=1, y=2) print(p1) # zxc(x=3, y=4) print(p.x) # 1 print(p.y) # 2
deque:双向队列
介绍双向队列之前,先说明一下队列是什么。队列是一种先进先出的数据结构,先放进去的要先取出。

import queue q = queue.Queue() q.put(1) # put 给队列中添加元素 q.put(2) q.put(3) print(q.get()) # get 取出队列中的元素 print(q.get()) print(q.get()) print(q.qsize()) # 获取当前队列的元素个数
双向队列就是可以在前或后进行添加和取出操作的队列,原则也是一样,先进先出。
from collections import deque # deque 双向队列 dp = deque() # 双向队列 前后都可以添加元素 dp.appendleft('前') # 在队列前面添加元素 dp.append('后') # 在队列后面添加元素 print(dp) # deque(['前', '后']) print(dp.popleft()) # 相当于print(dp[0]) # 在队列前面取元素 print(dp.pop()) # 相当于print(dp[-1]) # 在队列后面添加元素 print(dp.index('后')) # 获取队列中某元素的索引 不存在报错
OrderedDict:有序字典
from collections import OrderedDict # OrderedDict 有序的字典 Od = OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]) print(Od) # OrderedDict([('k1', 'v1'), ('k2', 'v2')]) print(Od.get('k1')) # 相当于print(Od['k1']) for k in Od: # 循环打印键 有序 print(k)
defaultdict:默认字典
from collections import defaultdict # 默认字典 在字典还没有添加键值对时,就指定了默认值,添加的键在不赋值的情况下使用默认值 dic = defaultdict(list) # 参数必须是可调用的对象 dic1 = defaultdict(lambda: 3) print(dic['k1']) # [] print(dic1['key']) # 3 dic['k2'].append(1) dic['k3'] = 'v3' # 直接赋值就不使用默认值 print(dic) # defaultdict(<class 'list'>, {'k1': [], 'k2': [1], 'k3': 'v3'})