collection系列

不常用功能,需要进行模块功能导入:
import collection

Counter

常用方法测试:

#!/usr/local/env python3
'''
Author:@南非波波
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import collections obj = collections.Counter('sjndsjkdsdmslaladsldsldms') print("输出字符出现的次数字典:")
for k,v in obj.items():
print("{%s:%s}" % (k,v)) print("输出每一个字符:") #遍历获取原始字符元素
for k in obj.elements():
print(k) print("输出前四个出现次数最多的字符:")
for k in obj.most_common(4):
print(k) 输出结果:
输出字符出现的次数字典:
{s:7}
{l:4}
{m:2}
{d:6}
{k:1}
{n:1}
{j:2}
{a:2}
输出每一个字符:
s
s
s
s
s
s
s
l
l
l
l
m
m
d
d
d
d
d
d
k
n
j
j
a
a
输出前四个出现次数最多的字符:
('s', 7)
('d', 6)
('l', 4)
('m', 2)

_missing_

	功能:对于不存在的元素,返回计数器为0
import collections
c = collections.Counter('adjsdkskdjksjaksklklakl')
c.__missing__(5)
返回结果:0

most_common

	功能:获取出现次数的前几个字母排名
import collections
c = collections.Counter('adjsdkskdjksjaksklklakl')
c.most_common(3)
[('k', 7), ('s', 4), ('a', 3)]
c.most_common(8)
[('k', 7), ('s', 4), ('a', 3), ('j', 3), ('l', 3), ('d', 3)]

elements

	功能:计数器中的所有元素,并且按照ascii码进行了排序
返回一个迭代器。元素被重复了多少次,在该迭代器中就包含多少个该元素。所有元素按照字母序排序,个数小于1的元素不被包含。
import collections
c = collections.Counter('adjsdkskdjksjaksklklakl')
sorted(c.elements())
返回结果:['a', 'a', 'a', 'd', 'd', 'd', 'j', 'j', 'j', 'k', 'k', 'k', 'k', 'k', 'k', 'k','l', 'l', 'l', 's', 's', 's', 's']

计数值的访问与缺失的键

	功能:默认将计数器中所有的字符认为一个键,然后统计键出现的次数,即键值。如果键不存在则返回0.
import collections
c = collections.Counter('adjsdkskdjksjaksklklakl')
>>> c['a']
3
>>> c['b']
0
>>> c['l']
3

update && subtract

	功能:都是更新计数器,update是增加,subtract是减少
import collections
>>> c = collections.Counter('which')
>>> c['h'] #这里的h出现2次
2
>>> c.update('with')
>>> c
Counter({'h': 3, 'i': 2, 'w': 2, 't': 1, 'c': 1})
>>> c['h'] #这里则完成了update操作,h出现了3次
3 >>> c.subtract('with')
>>> c
Counter({'h': 2, 'c': 1, 'i': 1, 'w': 1, 't': 0})
>>> c['h'] #这里完成subtract操作之后,h出现的次数又恢复到2次
2

del

	功能:删除键
import collections
>>> c = collections.Counter('which')
>>> c['h'] #这里的h出现2次
2
>>> del c['h']
>>> c
Counter({'c': 1, 'i': 1, 'w': 1, 't': 0})
>>> c['h'] #del操作删除了键'h'
0

copy

	功能:浅拷贝
import collections
>>> c = collections.Counter('which')
>>> d = c.copy()
>>> d
Counter({'h': 2, 'c': 1, 'i': 1, 'w': 1})
>>> id(c)
7150792
>>> id(d)
6511976

算术和集合操作

	功能:+、-、&、|操作也可以用于Counter。其中&和|操作分别返回两个Counter对象各元素的最小值和最大值。需要注意的是,得到的Counter对象将删除小于1的元素。

常用操作

	说明:Counter继承dict的所有方法,常用的操作列在下面,仅供参考

有序字典orderedDict

有序字典继承字典的一切属性,只是在顺序上是有序的。
d = collections.OrderedDict({'name':'swht','age':18})
print(d)
返回结果:OrderedDict([('name', 'swht'), ('age', 18)])
print(type(d))
返回结果:<class 'collections.OrderedDict'>

move_to_end

	功能:将指定的键值对从开头移动到末尾。
d = collections.OrderedDict({'name':'swht','age':18,'address':'shandong',})
d.move_to_end('name')
print(d)
返回结果:OrderedDict([('age', 18), ('address', 'shandong'), ('name', 'swht')])

pop

	功能:移除字典键值,并返回删除键值的values
d = collections.OrderedDict({'name':'swht','age':18,'address':'shandong',})
d.pop('address')
print(d)
返回结果:OrderedDict([('age', 18), ('name', 'swht')])

clear

	功能:清空有序字典的值
d = collections.OrderedDict({'name':'swht','age':18,'address':'shandong',})
d.clear()
print(d)
返回结果:OrderedDict()

keys,values,items

	功能:继承字典的属性,获取字典的所有键和所有值
d = collections.OrderedDict({'name':'swht','age':18,'address':'shandong',})
l1 = d.keys()
l2 = d.values()
l3 = d.items()
print(l1,l2,l3)
返回结果:odict_keys(['address', 'age', 'name']) odict_values(['shandong', 18, 'swht']) odict_items([('age', 18), ('name', 'swht'), ('address', 'shandong')])

默认字典defaultdict

defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。创建一个默认字典,value值类型为列表.
dic = collections.defaultdict(list)

可命名元组nametuple

没有现成的类,用户需要自行创建相应的类

测试代码

#!/usr/local/env python3
'''
Author:@南非波波
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import collections
MytupleClass = collections.namedtuple("MytupleClass",['x','y','z'])
obj = MytupleClass(11,22,33)
print(obj.x,obj.y,obj.z)
返回结果:11 22 33
总结:相当于在元组的基础上增加一个key,使其成为一个类字典的样子

队列

双向队列

下面两种方法都可以创建双向列表,虽然在最初的引用的类不同,但最后创建的类型 都是collections.deque
#创建双向队列
import collections
d = collections.deque()
返回结果:<class 'collections.deque'> #but这样创建双向队列呢
import queue
p = queue.deque()
print(type(p))
#<class 'collections.deque'>

单向队列

#创建单向队列
import queue
q = queue.Queue()
print(type(q))
#<class 'queue.Queue'>

最新文章

  1. CNN初步-2
  2. Java中的equals和hashCode方法
  3. 电商O2O-11种最佳运营模式
  4. poj 1695 动态规划
  5. Part 4 Identity Column in SQL Server
  6. grails的插件
  7. Beyond MySQL --Branching the popular database--转载
  8. 50个Android开发技巧(24 处理ListView数据为空的情况)
  9. Linq101-Join
  10. [Mugeda HTML5技术教程之19]制作可定制贺卡
  11. cygwin,在win中开发linux程序
  12. (转载)iptables 转发oracle端口
  13. 树链剖分——线段树区间合并bzoj染色
  14. redis 系列23 哨兵Sentinel (上)
  15. Java Web 项目发布到Tomcat中三种部署方法
  16. JavaScript高级用法二之内置对象
  17. CSM与UEFI
  18. mybatisGenerator自动生成pojo、dao、xml文件
  19. fastDFS errcode:9 path:Bad file descriptor errcode:22 path:Invalid argument
  20. easyui toopTip,鼠标划过悬浮,显示一个小提示框的方法

热门文章

  1. struts2 文件下载的处理
  2. golang设置代理
  3. C/C++ Volatile关键词深度剖析
  4. Jenkins CI Pipeline scripting
  5. CollectionUtils.isEqualCollection的用法
  6. 2015/9/21 Python基础(17):绑定和方法调用
  7. SpringCloud(二)注册服务提供者搭建
  8. php输出日志的实现
  9. MYSQL5.6学习——mysqldump备份与恢复
  10. form表单token错误