一:collection模块
作用:在常见的数据类型上又衍生出一些新的数据类型
(1)nametuple(具名元组):
(1)常规元组里面存放的都是数据 但是不能像字典似的给里面的数据进行描述
(2)具名元组可以对元组里面的数据进行描述
例如:
from collections import namedtuple # point = namedtuple('坐标',['x','y']) # 参数一为描述性信息 参数二为可迭代对象 # p = point(1,2) # 上传的参数 必须与可迭代对象里包含的参数相等 # print(p) # 坐标(x=1, y=2) card = namedtuple('扑克牌',['color','number']) p = card('♠','A') print(p) # 扑克牌(color='♠', number='A'
(2)deque(双栈队列):
(1)双栈队列
(2)其可以对列表里的元素进行双向添加删除
例如:
from collections import deque # number = deque([1,2,3,4]) number.append(66) print(number) # deque([1, 2, 3, 4, 66]) number = deque([1,2,3,4]) number.appendleft(66) print(number) # deque([66, 1, 2, 3, 4]) 头部添加数据 # number = deque([1,2,3,4]) number.pop() print(number) # deque([1, 2, 3]) number = deque([1,2,3,4]) number.popleft() print(number) # qeque([2, 3, 4]) # number = deque([1,2,3,4]) number.insert(1,'six') print(number) # deque([1, 'six', 2, 3, 4]) ''' PS: (1)双栈队列不应该支持索引插入值 只能首尾进行操作 (2)deque有点特殊 # '''
(3)orderdict(有序字典):
(1)常见的字典是无序的
(2)有序字典可以确定key_value顺序
例如:
from collections import OrderedDict user = OrderedDict({'name':'SR','age':18}) print(user) # OrderedDict([('name', 'SR'), ('age', 18)])
(4)defaultdict
(1):如果字典不存在 可以返回一个默认值 而不报错
例如:
from collections import defaultdict values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = defaultdict(list) # 后续key所对应的value都是列表 for value in values: if value>66: my_dict['k1'].append(value) else: my_dict['k2'].append(value) print(my_dict) # defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]})
PS:
(1)其不像fromkey当元素都只想一个列表的键值对的值都加入同一个列表中
(2)其创建列表是动态创建的 且不同的key对应不同的lieb
(5)counter
(1)其会以字典的键值对进行存储
(2)其中键值对的key为容器中的某元素 value为在容器中出现的次数
例如:
from collections import Counter s =Counter ('asdasdadsasdasd')
print(s) # Counter({'a': 5, 's': 5, 'd': 5}