Python collections系列

一.counter 计数器

#!/usr/bin/evn python3

import collections
'''
#Counter 是对字典功能的补充,用于统计值出现的次数
obj = collections系列.Counter('adsfnlaksfioewnxjioaieraksdflkj')
print(obj)

#most_common 用于统计指定多少个值出现的次数
result = obj.most_common(4)
print(result)

#elements 其实就是原生值
for k in obj.elements():
print(k)

#obj 其实是被计数器处理过的值
for k,v in obj.items():
print(k,v)

'''

#update 更新计数器(增加)
obj = collections.Counter([11,22,33,11,33,44])
#obj.update(['rain','andy',11])
print(obj)

#subtract 删除
obj.subtract(['rain','andy',11])
print(obj)


二.defaultdict默认字典
#!/usr/bin/env python3
from collections import defaultdict
'''
#defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。
#设置类型后就可以是用该类型的方法

#实例
#有如下值集合 [11,22,33,44,55,66,77,88,99,100...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。即: {'k1': 大于66 , 'k2': 小于66}


#默认字典实现方式
values = [11,22,33,44,55,66,77,88,99,100]

dic = defaultdict(list)
for k in values:
if k < 66:
dic['k1'].append(k)
else:
dic['k2'].append(k)

print(dic)
'''

'''
#python3.0 后没有has_key方法
#原生字典实现方式
values2 = [11, 22, 33,44,55,66,77,88,99,100]

my_dict = {}

for k in values2:
if k>66:
if my_dict.has_key('k1'):
my_dict['k1'].append(k)
else:
my_dict['k1'] = [k]
else:
if my_dict.has_key('k2'):
my_dict['k2'].append(k)
else:
my_dict['k2'] = [k]
print(my_dict)
'''
三.OrderedDict有序字典
#!/usr/bin/env python3
from collections import defaultdict
'''
#defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。
#设置类型后就可以是用该类型的方法

#实例
#有如下值集合 [11,22,33,44,55,66,77,88,99,100...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。即: {'k1': 大于66 , 'k2': 小于66}


#默认字典实现方式
values = [11,22,33,44,55,66,77,88,99,100]

dic = defaultdict(list)
for k in values:
if k < 66:
dic['k1'].append(k)
else:
dic['k2'].append(k)

print(dic)
'''

'''
#python3.0 后没有has_key方法
#原生字典实现方式
values2 = [11, 22, 33,44,55,66,77,88,99,100]

my_dict = {}

for k in values2:
if k>66:
if my_dict.has_key('k1'):
my_dict['k1'].append(k)
else:
my_dict['k1'] = [k]
else:
if my_dict.has_key('k2'):
my_dict['k2'].append(k)
else:
my_dict['k2'] = [k]
print(my_dict)
'''
四.deque双向队列
#!/usr/bin/env python3
import collections


#deque: 一个线程安全的双向队列;可以两边存两边取

d = collections.deque()

#append 从右边开始插入单个元素
d.append('andy')
d.append('rain')
print(d)

#appendleft 从左边插入单个元素
d.appendleft('left')
d.appendleft('hello')
print(d)

#extend 从右边开始插入多个元素
d.extend([11,22,33,11,22,33,44])
print(d)

#extendleft
d.extendleft([55,66,77,88,55,66,77,88])
print(d)

#clear 清空队列
#d.clear()
#print(d)

#count 统计队列中的某个元素有多少个
r = d.count(11)
print(r)

#rotate 把队列中的尾部元素放到头部,需指定多少个元素放到头部
d.rotate(2)
print(d)

#pop 从队列的右边删除一个元素,并赋值给你对象
a = d.pop()
print(d)
print(a)

#popleft从队列的左边删除一个元素,并赋值给你对象
a = d.popleft()
print(d)
print(a)

#remove 删除队列中指定的元素,默认是删除从左边开始的第一个,

d.remove(77)
print('a')
print(d)

#reverse队列元素反转
d.reverse()
print(d)
五.queue单向队列
#!/usr/bin/env python3

import queue

#单向队列只能一边存、一边取

d = queue.Queue()
d.put('andy')
d.put('baby')
d.put('rain')
d.put('ok')
print(d.qsize()) #查看队列中有多少个元素
print(d.get()) #获取队列中的元素
六.nametuple可命名元组
#!/usr/bin/env python3
import collections

#根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型。
#'x','y','z'相当于值11、22、33的别名
#可命名元组需要先创建一个类才能使用

MytupleClass = collections.namedtuple('mytupleclass',['x','y','z']) #创建MytupleClass这个类
obj = MytupleClass(11,22,33)
print(obj.x)
print(obj.y)
print(obj.z)
 

转载于:https://www.cnblogs.com/RainBower/p/5183218.html

你可能感兴趣的:(Python collections系列)