美文网首页Python语言学习
python的collections模块

python的collections模块

作者: 单细胞空间交响乐 | 来源:发表于2020-10-14 14:50 被阅读0次

    今天我们来学习一下基础知识之python模块----collections

    除python提供的内置数据类型(int、float、str、list、tuple、dict)外,collections模块还提供了其他数据类型,使用如下功能需先导入collections模块(import collections):
    计数器(counter)
    有序字典(orderedDict)
    默认字典(defaultdict)
    可命名元组(namedtuple)
    双向队列(deque)

    一、 计数器(Counter):统计元素的个数,并以字典形式返回{元素:元素个数}

    import collections
    x = 'asadadawdsdasdawdasdawdawdawedwqdfrgfdrgrthrhr'
    collections.Counter(x)
    返回值
    Counter({'d': 12, 'a': 10, 'w': 6, 'r': 5, 's': 4, 'f': 2, 'g': 2, 'h': 2, 'e': 1, 'q': 1, 't': 1})
    ###默认从大到小排序
    
    Counter类包含方法如下:

    1. most_common:将元素出现的次数按照从高到低进行排序,并返回前N个元素,若多个元素统计数相同,按照字母顺序排列,N若未指定,则返回所有元素

    collections.Counter(x).most_common(3)
    返回值:[('d', 12), ('a', 10), ('w', 6)]##注意这里返回的是列表
    

    2. elements:返回一个迭代器,元素被重复多少次,在迭代器中就包含多少个此元素,所有元素按字母序排列,个数<1的不罗列

    list(collections.Counter(x).elements())
    返回值['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 's', 's', 's', 's', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'w', 'w', 'w', 'w', 'w', 'w', 'e', 'q', 'f', 'f', 'r', 'r', 'r', 'r', 'r', 'g', 'g', 't', 'h', 'h']
    

    3. update:增加元素的重复次数

    collections.Counter(x)
    返回值
    Counter({'d': 12, 'a': 10, 'w': 6, 'r': 5, 's': 4, 'f': 2, 'g': 2, 'h': 2, 'e': 1, 'q': 1, 't': 1})
    collections.Counter(x).update('d')
    返回值
    Counter({'d': 12, 'a': 10, 'w': 6, 'r': 5, 's': 4, 'f': 2, 'g': 2, 'h': 2, 'e': 1, 'q': 1, 't': 1})
    ###说明直接使用不起作用
    y = collections.Counter(x)
    y.update('d')
    y
    返回值
    Counter({'d': 13, 'a': 10, 'w': 6, 'r': 5, 's': 4, 'f': 2, 'g': 2, 'h': 2, 'e': 1, 'q': 1, 't': 1})
    

    4. subtract:减少元素重复次数

    同样的,直接使用不起作用
    collections.Counter(x).subtract('d')###不起作用
    y.subtract('d')
    y
    返回值:
    Counter({'d': 11, 'a': 10, 'w': 6, 'r': 5, 's': 4, 'f': 2, 'g': 2, 'h': 2, 'e': 1, 'q': 1, 't': 1})
    ###相应的元素减一
    

    这个可以配合element一起使用。

    二、有序字典(orderedDict):继承了dict的所有功能,dict是无序的,orderedDict刚好对dict作了补充,记录了键值对插入的顺序,是有序字典

    说明:python v3.6之前的版本dict是无序的,3.6版本之后(含v3.6)dict是有序的,目测为了兼容性以及100%有序性考虑,建议实现有序功能时使用orderedDict

    import collections as co
    co.OrderedDict({'name':'zhaoyunfei','sex':'man','age':27})
    返回值:
    OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man'), ('age', 27)])
    ###注意这里的返回结果
    
    orderedDict类补充方法:
    x = co.OrderedDict({'name':'zhaoyunfei','sex':'man','age':27})
    x.clear()    ###清空字典
    返回值   OrderedDict()            ####实际上好像没什么用😄
    
    x.popitem()   ####有序删除,类似于栈,按照后进先出的顺序依次删除
    返回值:
    OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man')])
    
    x.pop('age')       ###删除指定的键值对
    返回值:
    OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man')])             ###类似于列表的pop
    
    x.setdefault('zhao')  ###设置默认值,默认为None,也可指定值
    返回值
    OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man'), ('zhao', None)])
    x.setdefault('zhao','love')  ###设置默认值
    返回值
    OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man'), ('zhao', 'love')])
    
    x.update({'美少女':'我爱你'})  更新字典,有则更新,无则添加
    返回值
    OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man'), ('zhao', 'love'), ('美少女', '我爱你')])
    

    三、默认字典(defaultdict):设置values默认类型,如list、tuple

    import collections as co
    co.defaultdict(list)  ###指定value的类型
    ###与字典的功能类似
    

    当然还有很多其他的功能,常用的都在这里了。。

    这是基础,请保持愤怒,让王多余倾家荡产

    相关文章

      网友评论

        本文标题:python的collections模块

        本文链接:https://www.haomeiwen.com/subject/nefwpktx.html