python collection 系列

1:counter :计算出每一个字符出现的个数,并返回一个字典

 

obj = collections.Counter('aadfkla;jfl') 
print(obj)
print(obj.most_common(5))#拿到counter里面的前5位


2:有序字典:普通字典是无序的,获取里面的值通过key-value的形式获取,而有序字典则是有顺序的

 

dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
dic.move_to_end('k1')
print(dic)
dic.popitem() #重后面取出
print(dic)

print(dic.pop('k2'))#指定取出的key
print(dic)

3:默认字典:也就是指定字典值的类型

 

dic = collections.defaultdict(list)
dic['k1']=['v1'] #这里在指定值的时候以定要加上【】不然相当于把值的类型又改为str了
dic['k2']='v2'
dic['k1'].append('v11')
print(dic)

4:可命名元组:应用的方向:对于表示坐标时,取值的时候不能用下标来取而是通过obj.x(obj.y)来取

 

MytupleClass = collections.namedtuple('MytupeClass',['x','y','z']) #这里参数名称可以用()亦可以用【】


obj = MytupleClass(11,22,33)
print(obj.x)
print(obj.y)
print(obj.z)
print(help(MytupleClass))

print(obj)

5:双向队列:就是队列的两边都可以进行插入和取出的操做

 

obj = collections.deque()
obj.appendleft('22')
obj.append('33')
print(obj.count('22'))
obj.extend(['33','3333','555','888'])#右边扩展
obj.extendleft('jdjf','sdd') #左边扩展
obj.index('22')  #取出该值的索引(从左到右的第一个)
obj.insert('2','2hahah')
obj.pop()#取出
obj.reverse()#反转
obj.rotate() #把数据从右边逐个取出插入左边

print(obj)

6:注意:队列不是collection里面的,而是python内部就有的,消息机制就是通过队列来实现的

 

import queue
# qsize:个数
#empty
#full是否填满;消息机制就是用队列来实现的;
q = queue.Queue()
q.qsize()
q.put('123')
q.get()
print(q.get())

collections里面的都是对原有的类型的加工而已,扩展了一些功能

 



 

posted on 2018-05-23 21:41  blueslichanghui  阅读(165)  评论(0编辑  收藏  举报

导航