collections模块
在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
3.Counter: 计数器,主要用来计数
4.OrderedDict: 有序字典
5.defaultdict: 带有默认值的字典
1.namedtuple
#1 namedtuple from collections import namedtuple Point = namedtuple('point',['x','y']) p = Point(110,365) print(p) '''结果: point(x=110, y=365) ''' print(p.x,p.y) '''结果: 110 365 '''
2.deque
#2 deque #deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈 from collections import deque q = deque(['a','b','c']) q.append('x') q.appendleft('y') print(q) '''结果: deque(['y', 'a', 'b', 'c', 'x']) ''' #deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。
3.OrderedDict
#3 OrderedDict有序字典 from collections import OrderedDict d = dict([('a',1),('b',2),('c',3)]) print(d) #dict的key是无序的 '''结果: {'c': 3, 'b': 2, 'a': 1} ''' od = OrderedDict([('b', 2), ('c', 3), ('a', 1)]) print(od) #OrderedDict的key是有序的 '''结果: OrderedDict([('b', 2), ('c', 3), ('a', 1)]) ''' #OrderedDict的其它用法和Dict无序字典一样,唯一不一样就是orderedDict是有序
4.defaultdict
#4 defaultdict默认字典 from collections import defaultdict lis = [1,2,3,4,5,6] my_dic = defaultdict(list) #定义一个字典,对应的value类型是list列表 for i in lis: if i % 2 ==0: my_dic['k1'].append(i) else: my_dic['k2'].append(i) print(my_dic) '''结果: defaultdict(<class 'list'>, {'k1': [2, 4, 6], 'k2': [1, 3, 5]}) ''' my_dic2 = defaultdict(lambda : '没有这个Key') #通过匿名函数定义Key不存在时的返回值 my_dic2['1'] =1 print(my_dic2['1']) '''结果: 1 ''' print(my_dic2['2']) '''结果: 没有这个Key '''