博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python常用collections模块
阅读量:3960 次
发布时间:2019-05-24

本文共 2120 字,大约阅读时间需要 7 分钟。

collections是日常工作中的重点、高频模块,常用类型有:

  • 计数器(Counter)
  • 双向队列(deque)
  • 默认字典(defaultdict)
  • 有序字典(OrderedDict)
  • 可命名元组(namedtuple

1. Counter

  Counter作为字典dicit()的一个子类用来进行hashtable计数,将元素进行数量统计,计数后返回一个字典,键值为元素,值为元素个数

常用方法:

名称 用法
most_common(int) 按照元素出现的次数进行从高到低的排序,返回前int个元素的字典
elements 返回经过计算器Counter后的元素,返回的是一个迭代器
update 和set集合的update一样,对集合进行并集更新
substract 和update类似,只是update是做加法,substract做减法,从另一个集合中减去本集合的元素
iteritems 返回由Counter生成的字典的所有item
iterkeys 返回由Counter生成的字典的所有key
itervalues 返回由Counter生成的字典的所有value

示例:

#coding=utf-8from collections import Counterstr = "abcbcaccbbad"li = ["a","b","c","a","b","b"]d = {
"1":3, "3":2, "17":2}#Counter获取各元素的个数,返回字典print ("Counter(s):", Counter(str))print ("Counter(li):", Counter(li))print ("Counter(d):", Counter(d))#most_common(int)按照元素出现的次数进行从高到低的排序,返回前int个元素的字典d1 = Counter(str)print ("d1.most_common(2):",d1.most_common(2))#elements返回经过计算器Counter后的元素,返回的是一个迭代器print ("sorted(d1.elements()):", sorted(d1.elements()))print ('''("".join(d1.elements())):''',"".join(d1.elements()))#若是字典的话返回value个keyd2 = Counter(d)print("若是字典的话返回value个key:", sorted(d2.elements()))#update和set集合的update一样,对集合进行并集更新print ("d1.update("sas1"):",d1.update("sas1"))
Counter(s): Counter({'b': 4, 'c': 4, 'a': 3, 'd': 1}) Counter(li): Counter({'b': 3, 'a': 2, 'c': 1}) Counter(d): Counter({'1': 3, '3': 2, '17': 2})d1.most_common(2): [('b', 4), ('c', 4)] sorted(d1.elements()): ['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'd']("".join(d1.elements())): aaabbbbccccd['1', '1', '1', '17', '17', '3', '3']

2.deque

  deque属于高性能的数据结构之一,常用方法如下:

名称 用法
append 队列右边添加元素
appendleft 队列左边添加元素
clear 清空队列中的所有元素
count 返回队列中包含value的个数
extend 队列右边扩展,可以是列表、元组或字典,如果是字典则将字典的key加入到deque
extendleft 同extend,在左边扩展
pop 移除并返回队列右边的元素
popleft 移除并返回队列左边的元素
remove(value) 移除队列第一个出现的元素
reverse 队列的所有元素进行反转
rotate(n) 对队列数进行移动

3. defaultdict

  默认字典,字典的一个子类,继承所有字典的方法,默认字典在进行定义初始化的时候得指定字典值有默认类型

dic = defaultdict(dict)  dic["k1"].update({
"asdsa":"123"})   print (dic)>>> defaultdict(
, {
'k1': {
'asdsa': '123'}})

注:字典dic在定义的时候就定义好了值为字典类型,虽然现在字典中还没有键值 k1,但仍然可以执行字典的update方法. 这种操作方式在传统的字典类型中是无法实现的,必须赋值以后才能进行值得更新操作,否则会报错。

转载地址:http://mzhzi.baihongyu.com/

你可能感兴趣的文章
CentOS 6.6 搭建Zabbix 3.4.8 过程
查看>>
make: *** No targets specified and no makefile found. Stop.解决方法
查看>>
安装zabbix 3.4版本编译报错configure: error: Unable to use libevent (libevent check failed) 解决办法
查看>>
一行代码更改密码
查看>>
非插件实现cookie版Typecho文章阅读次数统计功能
查看>>
非插件实现Typecho语法高亮
查看>>
windows 下 netsh 实现 端口映射(端口转发)
查看>>
两个好用的命令行工具 watch 和 rsync
查看>>
信安入门神级书单
查看>>
【IPFS指南】IPFS的竞争对手们(一)
查看>>
docker更换国内镜像
查看>>
CentOS 下 tree命令用法详解
查看>>
docker上传镜像至Registry时https报错解决方法
查看>>
安装 docker-compose (实测可用,妈妈再也不用担心被墙了)
查看>>
docker下删除none的images
查看>>
Linux提权获取敏感信息方法
查看>>
Ubuntu 16.04开机A start job is running for Raise network interface(5min 4s)解决方法
查看>>
Ubuntu 16.04开机隐藏菜单缩短时间
查看>>
Ubuntu 更换国内源
查看>>
Ubuntu16.04下Docker pull connection refused 解决办法
查看>>