collections 模块
# 具有名字的元组(具名元组)
元组的每个元素都有特定的名字,并且可以通过名字获取参数
1 # # namedtuple 具名元组 2 # 想表示一个坐标点,x为1,y为2 3 from collections import namedtuple 4 # point = namedtuple('坐标',['x','y']) # 可以传可迭代对象,字符串用空格隔开 5 point = namedtuple('坐标','x y') # 等同于上面,不过是字符串中用空格隔开 6 p = point(1,2) # 里面的的元素个数必须和namedtuple一至 7 8 print(p) 9 print(p.x) 10 print(p.y) 11 # 取值方式是 元组.名称 # 名称不能加'(引号) 12 # 而且还保留了索引的取值方式
# deque 双端队列
# 两边都能进值,两边都能取值 from collections import deque q = deque(['a','b','c']) ''' 方法 .append # 放值(右边)(默认) .appendleft # 放值(左边) .pop # 取值(右边)(默认) .popleft # 放值(左边) .insert # 从之间插入 # # 特殊点:双端队列可以根据索引在任意位置插值 队列不应该支持任意位置插值 只能在首位插值(不能插值) ''' q.append(1) q.appendleft(2) q.insert(1,'我的天') # 特殊点:双端队列可以根据索引在任意位置插值 print(q) print(q.pop()) print(q.popleft())
# OrderedDict 有序字典
# 唯一区别就是字典的有序版本 ############### # normal_d = dict([('a',1),('b',2),('c',3)]) # print(normal_d) from collections import OrderedDict order_d = OrderedDict([('a',1),('b',2),('c',3)]) order_d['x'] = 1 order_d['y'] = 2 order_d['z'] = 3 print(order_d)
# defaultdict # 默认值字典
# 默认值字典 # 只要有键,值就是一个你指定的类型 d1 = defaultdict(int) # defaultdict(<class 'int'>, {'y': 0}) d2 = defaultdict(list) # defaultdict(<class 'list'>, {'y': []}) # 字典新建的key对应的value默认就是列表 d3 = defaultdict(bool) # defaultdict(<class 'bool'>, {'y': False}) d1['y'] d2['y'] d3['y'] print(d1) print(d2) print(d3) >>> defaultdict(<class 'int'>, {'y': 0}) defaultdict(<class 'list'>, {'y': []}) defaultdict(<class 'bool'>, {'y': False})
Counter# # 统计字符串,然后变成字典{'文字','出现次数'}
from collections import Counter s = 'abcdeabcdabcaba' res = Counter(s) print(res)