zoukankan      html  css  js  c++  java
  • python collection系列

    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'>
  • 相关阅读:
    js中return、return true、return false的区别
    flask,中间键
    flask,自定义中间件
    flask,闪现
    flask获取前端发送过来的数据
    flask中的如何将后端写前端的代码设置session
    flask中的正则匹配
    flask中的四剑客 及其他参数
    支付宝接口
    flasks框架简介
  • 原文地址:https://www.cnblogs.com/songqingbo/p/5137785.html
Copyright © 2011-2022 走看看