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中与字典有关的类相关推荐

  1. python标准库random中函数的作用_Python随机函数库random的使用方法详解

    Python随机函数库random的使用方法详解 前言 众所周知,python拥有丰富的内置库,还支持众多的第三方库,被称为胶水语言,随机函数库random,就是python自带的标准库,他的用法极为 ...

  2. Python标准库collections库:超好用的counter计数器,不接受反驳!

    collections是python的标准库,它提供了一些解决特定问题的容器,也就是说有些问题虽然可以用list,tuple,dict解决,但解决起来太麻烦,而这些问题又经常遇到,所以他们就把这些问题 ...

  3. Python标准库——collections模块的Counter类

    更多16 最近在看一本名叫<Python Algorithm: Mastering Basic Algorithms in the Python Language>的书,刚好看到提到这个C ...

  4. Python标准库collections模块的Counter类

    collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类:排 ...

  5. python标准库os中的方法_python中OS常用方法

    下面列出了一些在os模块中比较有用的部分.它们中的大多数都简单明了. os.sep可以取代操作系统特定的路径分隔符.windows下为 "\\" os.name字符串指示你正在使用 ...

  6. Python标准库datetime中4种基本对象的用法

    好消息:"Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社, ...

  7. python标准库math中sin函数的参数单位是角度吗_弧度 - math.h中的三角函数,参数是弧度,不是角度...

    在数学和物理中,弧度是角的度量单位.它是由国际单位制导出的单位,单位缩写是rad. 定义1:弧长等于半径的弧,其所对的圆心角为1弧度.(即两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧.当这 ...

  8. python标准库math中计算平方根的函数_16 Python 标准库之 math 模块 - Python 进阶应用教程...

    1. 前言 math 模块中包含了各种浮点运算函数,包括: 函数 功能 floor 向下取整 ceil 向上取整 pow 指数运算 fabs 绝对值 sqrt 开平方 modf 拆分小数和整数 fsu ...

  9. Python标准库shutil中rmtree()使用回调函数

    这段代码目的是删除包含只读文件的文件夹,主要演示回调函数的用法. >>> import os >>> import stat >>> import ...

最新文章

  1. 201521123079 《Java程序设计》第1周学习总结
  2. 来自过气科技网红的2020年终总结
  3. 关于Nginx参数路径问题的问题
  4. yearProgress.vue
  5. 【CodeForces - 227C】Flying Saucer Segments (思维)
  6. Node项目部署正常启动后不能访问的问题
  7. useMemo与useCallback
  8. python 3.x 不再支持MySQLdb 模块
  9. 节点name在graph中无法展示_基于珠三角与粤东西北的日前节点电价差异分
  10. SQL Server更新联接概述
  11. 【LINQ】Linq to SQL -- Count/Sum/Min/Max/Avg 操作符
  12. AWS 创业背后,竟是“被迫无奈”?
  13. php 405,php Restler 405 Method Not Allowed 问题解决啦,restlerallowed_PHP教程
  14. 队列:先进先出的线性表,如何实现增删查?
  15. Qt 之 模仿 QQ登陆界面——样式篇
  16. 褚霸:不要为了开源而开源
  17. Codeforces Round #507 (Div. 2) B - Shashlik Cooking(模拟)
  18. ESXi主机从6.7升级到ESXi 7.0.3后无法识别Emulex LPe12000 HBA卡
  19. ICCV2021 | TOOD:任务对齐的单阶段目标检测
  20. Centos上卸载阿里云盾

热门文章

  1. 计算工资底薪加提成的java_月工资如何计算我是做服务行业,底薪2200全勤100加提成5 - 找法网(findlaw.cn)...
  2. mysql临时关闭查询日志_mysql故障排错临时打开通用日志和慢查询日志
  3. delphi 文字 动画 特效 控件_设计师的特效让程序员追砍3条街,220集AE软件教学视频,教他做人...
  4. ann matlab,MatlabANN工具箱实用指南.doc
  5. 曾经的python爬虫挣钱生活_聊一聊,这些年我用Python爬虫挣钱的那些事
  6. gdiplus判断一个点是否在圆弧线上_面试前必读!!!原生JS补给(上)
  7. Linux 环境下FC(SAN)磁盘在线删除
  8. mysql监控php脚本
  9. linux使用什么ide编译安卓,抛弃IDE,使用gradle命令与vim构建安卓应用
  10. springboot2.0版本后配置拦截器会导致静态资源被拦截