collections

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)

 

 

 

 

 

posted @ 2019-07-18 20:06  Pscly  阅读(228)  评论(0编辑  收藏  举报