Python标准库collections中与字典有关的类
Python标准库中提供了很多扩展功能,大幅度提高了开发效率。这里主要介绍OrderedDict类、defaultdict类和Counter类。
(1)OrderedDict类
Python内置字典dict是无序的,如果需要一个可以记住元素插入顺序的字典,可以使用collections.OrderedDict。例如:
>>> import collections
>>> x = collections.OrderedDict() #有序字典
>>> x['a'] = 3
>>> x['b'] = 5
>>> x['c'] = 8
>>> x
OrderedDict([('a', 3), ('b', 5), ('c', 8)])
(2)defaultdict类
使用collections模块的defaultdict类来统计字符出现频次。
>>> import string
>>> import random
>>> x = string.ascii_letters + string.digits + string.punctuation
>>> y = [random.choice(x) for i in range(1000)]
>>> z = ''.join(y)
>>> from collections import defaultdict
>>> frequences = defaultdict(int) #所有值默认为0
>>> frequences
defaultdict(<class 'int'>, {})
>>> for item in z:
frequences[item] += 1 #修改每个字符的频次
>>> frequences.items()
创建defaultdict对象时,传递的参数表示表示字典中值的类型,除了上面代码演示的int类型,还可以是任意合法的Python类型。
>>> from collections import defaultdict
>>> games = defaultdict(list) #使用list作为值类型
>>> games #所有值默认为空列表
defaultdict(<class 'list'>, {})
>>> games['name'].append('dong') #可直接为字典games添加元素
>>> games['name'].append('zhang')
>>> games['score'].append(90)
>>> games['score'].append(93)
>>> games
defaultdict(<class 'list'>, {'score': [90, 93], 'name': ['dong', 'zhang']})
(3)Counter类
对于频次统计的问题,使用collections模块的Counter类可以更加快速地实现这个功能,并且能够提供更多的功能,例如查找出现次数最多的元素。
>>> from collections import Counter
>>> frequences = Counter(z) #这里的z还是前面代码中的字符串对象
>>> frequences.items()
>>> frequences.most_common(1) #返回出现次数最多的1个字符及其频率
>>> frequences.most_common(3) #返回出现次数最多的前3个字符及其频率
Python标准库collections中与字典有关的类相关推荐
- python标准库random中函数的作用_Python随机函数库random的使用方法详解
Python随机函数库random的使用方法详解 前言 众所周知,python拥有丰富的内置库,还支持众多的第三方库,被称为胶水语言,随机函数库random,就是python自带的标准库,他的用法极为 ...
- Python标准库collections库:超好用的counter计数器,不接受反驳!
collections是python的标准库,它提供了一些解决特定问题的容器,也就是说有些问题虽然可以用list,tuple,dict解决,但解决起来太麻烦,而这些问题又经常遇到,所以他们就把这些问题 ...
- Python标准库——collections模块的Counter类
更多16 最近在看一本名叫<Python Algorithm: Mastering Basic Algorithms in the Python Language>的书,刚好看到提到这个C ...
- Python标准库collections模块的Counter类
collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类:排 ...
- python标准库os中的方法_python中OS常用方法
下面列出了一些在os模块中比较有用的部分.它们中的大多数都简单明了. os.sep可以取代操作系统特定的路径分隔符.windows下为 "\\" os.name字符串指示你正在使用 ...
- Python标准库datetime中4种基本对象的用法
好消息:"Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社, ...
- python标准库math中sin函数的参数单位是角度吗_弧度 - math.h中的三角函数,参数是弧度,不是角度...
在数学和物理中,弧度是角的度量单位.它是由国际单位制导出的单位,单位缩写是rad. 定义1:弧长等于半径的弧,其所对的圆心角为1弧度.(即两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧.当这 ...
- python标准库math中计算平方根的函数_16 Python 标准库之 math 模块 - Python 进阶应用教程...
1. 前言 math 模块中包含了各种浮点运算函数,包括: 函数 功能 floor 向下取整 ceil 向上取整 pow 指数运算 fabs 绝对值 sqrt 开平方 modf 拆分小数和整数 fsu ...
- Python标准库shutil中rmtree()使用回调函数
这段代码目的是删除包含只读文件的文件夹,主要演示回调函数的用法. >>> import os >>> import stat >>> import ...
最新文章
- 201521123079 《Java程序设计》第1周学习总结
- 来自过气科技网红的2020年终总结
- 关于Nginx参数路径问题的问题
- yearProgress.vue
- 【CodeForces - 227C】Flying Saucer Segments (思维)
- Node项目部署正常启动后不能访问的问题
- useMemo与useCallback
- python 3.x 不再支持MySQLdb 模块
- 节点name在graph中无法展示_基于珠三角与粤东西北的日前节点电价差异分
- SQL Server更新联接概述
- 【LINQ】Linq to SQL -- Count/Sum/Min/Max/Avg 操作符
- AWS 创业背后,竟是“被迫无奈”?
- php 405,php Restler 405 Method Not Allowed 问题解决啦,restlerallowed_PHP教程
- 队列:先进先出的线性表,如何实现增删查?
- Qt 之 模仿 QQ登陆界面——样式篇
- 褚霸:不要为了开源而开源
- Codeforces Round #507 (Div. 2) B - Shashlik Cooking(模拟)
- ESXi主机从6.7升级到ESXi 7.0.3后无法识别Emulex LPe12000 HBA卡
- ICCV2021 | TOOD:任务对齐的单阶段目标检测
- Centos上卸载阿里云盾
热门文章
- 计算工资底薪加提成的java_月工资如何计算我是做服务行业,底薪2200全勤100加提成5 - 找法网(findlaw.cn)...
- mysql临时关闭查询日志_mysql故障排错临时打开通用日志和慢查询日志
- delphi 文字 动画 特效 控件_设计师的特效让程序员追砍3条街,220集AE软件教学视频,教他做人...
- ann matlab,MatlabANN工具箱实用指南.doc
- 曾经的python爬虫挣钱生活_聊一聊,这些年我用Python爬虫挣钱的那些事
- gdiplus判断一个点是否在圆弧线上_面试前必读!!!原生JS补给(上)
- Linux 环境下FC(SAN)磁盘在线删除
- mysql监控php脚本
- linux使用什么ide编译安卓,抛弃IDE,使用gradle命令与vim构建安卓应用
- springboot2.0版本后配置拦截器会导致静态资源被拦截