在很多计算任务中,需要统计不同信息出现的次数,最常见的就是统计某段文字中每个词或者每个字出现的次数,也就是常见的词频统计,这个时候,字典就派上了很大的用场,我们看看通过字典怎么进行统计。

我们用鲁迅先生的经典语录作为例子(略有改动),为了简化,就不分词了,自己分字,统计字数即可。分词后形成了一个列表

text = list('床上有两个枕头,一个是我的,另一个也是我的')
print(text)
['床', '上', '有', '两', '个', '枕', '头', ',', '一', '个', '是', '我','的', ',', '另', '一', '个', '也', '是', '我', '的']

方法一:

通过字典,直接进行统计

word_dic = {}
for word in text:if word in word_dic:word_dic[word] += 1else:word_dic[word]  = 1
print(word_dic)
{'床': 1, '上': 1, '有': 1, '两': 1, '个': 3, '枕': 1, '头': 1, ',': 2,'一': 2, '是': 2, '我': 2, '的': 2, '另': 1, '也': 1}

方法二:

上面的语句加了条件判断,显得稍微有点复杂,我们可以简化如下

word_dic = {}
for word in text:word_dic[word] = word_dic.get(word,0)+1
print(word_dic)
{'床': 1, '上': 1, '有': 1, '两': 1, '个': 3, '枕': 1, '头': 1, ',': 2,'一': 2, '是': 2, '我': 2, '的': 2, '另': 1, '也': 1}

方法三:

还可以用collections 模块的defaultdict进行统计,显得更加简洁,更加专业。

from collections import defaultdict
word_dic = defaultdict(int)
for word in text:word_dic[word] += 1
print(word_dic)
defaultdict(<class 'int'>, {'床': 1, '上': 1, '有': 1, '两': 1, '个': 3, '枕': 1,
'头': 1, ',': 2, '一': 2, '是': 2, '我': 2, '的': 2, '另': 1, '也': 1})

上面三种方法,看起来简单,实际上,要理解其中的奥妙是非常困难的,特别是对于初学者,大家可以仔细琢磨。

方法一之所以要加条件判断,是因为第一次出现的字,在字典中不存在,dict[key],当key不存在时会报错。

方法二通过get(word,0)方法,获取,如果不存在,则默认加入并置为0,后面加1就恰好是统计的次数了。需要充分理解get方法。

方法三通过defaultdict(int),默认不存在时是0,都不用设置,显得更加简洁,大家细细品味。

不明白的可以看我的另外两篇文章:

Python库collections,让你击败99%的Pythoner【万字长文详解】
Python字典详解-超级完整版

···  END  ···

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑黄海广老师《机器学习课程》视频课
本站qq群851320808,加入微信群请扫码:

【Python】Python字典的高级用法-统计计数相关推荐

  1. Python变量与注释高级用法

    Python变量与注释高级用法 1.概述 好的变量和注释并非为计算机而写,而是为每个阅读代码的人而写.变量与注释是表达作者思想的基础,他们对代码质量的贡献母庸质疑. 2.变量 2.1.变量解包 1.什 ...

  2. 默认是字典排序法_每日一课 | Python 进阶编程之字典的高级用法

    一. collections 中 defaultdict 的使用 1.1 字典的键映射多个值 将下面的列表转成字典 l = [('a',2),('b',3),('a',1),('b',4),('a', ...

  3. python基础和第三方库 笔记(python基础完结包括高级用法,第三方库持续更新中...)

    python基础 注:本笔记面向有一定基础的人 本笔记是本人快速复习python过程中记录的,不适合零基础的人学习python的主工具,可以作为辅工具,本笔记记录了入门阶段常用操作,如有错误的地方,希 ...

  4. Python的 5 种高级用法,效率提升没毛病!

    (给视学算法加星标,提升Python技能) 转自:机器之心(ID:almosthuman2014) 任何编程语言的高级特征通常都是通过大量的使用经验才发现的.比如你在编写一个复杂的项目,并在 stac ...

  5. Python面试常用的高级用法,怎么动态创建类?

    元类是Python当中的 高级用法 ,如果你之前从来没见过这个术语或者是没听说过这个概念,这是非常正常的,因为一方面它的 使用频率不高 ,另外一方面就是它相对 不太容易理解 .以至于很多Python开 ...

  6. python的5种高级用法,效率提高没毛病!

    任何编程语言的高级特征通常都是通过大量的使用经验才发现的.比如你在编写一个复杂的项目,并在 stackoverflow 上寻找某个问题的答案.然后你突然发现了一个非常优雅的解决方案,它使用了你从不知道 ...

  7. python sort、sorted 高级用法

    python sort.sorted高级排序技巧 转载原因:学习<机器学习实战>决策树这一章节时,对为了确定叶节点而采用的多数表决法的python程序有些疑惑 故求助度娘,发现了这篇文章, ...

  8. python字典高级用法_Python 进阶编程之字典的高级用法

    一. collections 中 defaultdict 的使用 1.1 字典的键映射多个值 将下面的列表转成字典 l = [('a',2),('b',3),('a',1),('b',4),('a', ...

  9. python字典高级用法_Python 字典的高级用法

    一. collections 中 defaultdict 的使用 1.一个字典映射多个值: 待处理字典: l = [('a',2),('b',3),('a',1),('b',4),('a',3),(' ...

最新文章

  1. JavaScript高级程序设计(1)
  2. 对象引用未保存的瞬态实例-在刷新之前保存瞬态实例
  3. 揭开雷达的面纱(科普)探测能力
  4. Java并发:线程池详解(ThreadPoolExecutor)
  5. log4net简单配置打印日志
  6. Java21-day12【网络编程(网络编程入门(ip地址、端口、协议、InetAddress)、UDP通信程序、TCP通信程序)】
  7. 剑指offer---用两个栈实现队列
  8. Windows7下安装配置PostgreSQL10
  9. json c语言 数组转字符串数组中,json和字符串/数组/集合的互相转换の神操作总结...
  10. 隐藏html和php后缀的简易方法
  11. Bailian2976 Bailian1936 All in All【字符串匹配】
  12. 中英文对照 —— 航空航天航海、交通运输工具
  13. 中国纺织行业前景动态分析与投资战略研究报告2022-2028年
  14. Linux用户和密码
  15. 海量图标矢量图免费下载【来自阿里】
  16. 注册表删除windows开机启动项
  17. 常见的网络命令--ping.hostname
  18. phpnow升级php5.5版本,PHPNow156升级PHP版本至5.3.5
  19. 教室预约APP系统(基于uni-app框架)毕业设计毕业论文开题报告参考(1)系统功能
  20. 《MLB美职棒大联盟》:MLB最佳阵容·MLB新年也要身体倍棒

热门文章

  1. codeforces 711B - Chris and Magic Square(矩阵0位置填数)
  2. 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA
  3. JavaScript学习笔记-JSON对象
  4. Ubuntu10.04系统调试TQ2440开发板之一《Ubuntu下搭建TQ2440的程序下载环境》
  5. TreeView的复选框隐藏 重新整理
  6. 添加WSS3.0中文模板 - [SharePoint Server]
  7. Reinforcement Learning
  8. 对《构建之法》的一点认识
  9. 普通用户Mysql 5.6.13 主从,主主及nagios的mysql slave监控
  10. STL标准库vector笔记