今天我们来学习一下基础知识之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的类型
###与字典的功能类似
当然还有很多其他的功能,常用的都在这里了。。
这是基础,请保持愤怒,让王多余倾家荡产