使用Python 统计高频字数的方法


Posted in Python onJanuary 31, 2019

问题

(来自Udacity机器学习工程师纳米学位预览课程)

用 Python 实现函数 count_words(),该函数输入字符串 s 和数字 n,返回 s 中 n 个出现频率最高的单词。返回值是一个元组列表,包含出现次数最高的 n 个单词及其次数,即 [(<单词1>, <次数1>), (<单词2>, <次数2>), ... ],按出现次数降序排列。

可以假设所有输入都是小写形式,并且不含标点符号或其他字符(只包含字母和单个空格)。如果出现次数相同,则按字母顺序排列。

例如:

print count_words("betty bought a bit of butter but the butter was bitter",3)

输出

[('butter', 2), ('a', 1), ('betty', 1)]

解法

"""Count words."""

def count_words(s, n):
  """Return the n most frequently occuring words in s."""
  w = {}
  sp = s.split()
  # TODO: Count the number of occurences of each word in s
  for i in sp:
    if i not in w:
      w[i] = 1
    else:
      w[i] += 1

  # TODO: Sort the occurences in descending order (alphabetically in case of ties)
  top = sorted(w.items(), key=lambda item:(-item[1], item[0]))
  top_n = top[:n]
  # TODO: Return the top n most frequent words.
  return top_n


def test_run():
  """Test count_words() with some inputs."""
  print count_words("cat bat mat cat bat cat", 3)
  print count_words("betty bought a bit of butter but the butter was bitter", 3)


if __name__ == '__main__':
  test_run()

小结

主要两个小技巧:

用split()将输入字符串按空格分开;

用sorted()函数对字典 先按值,再按键 进行排序,尤其是item:(-item[1], item[0])) 代表先对item的第二个元素 降序 排列(item 之前用了-),然后对第一个元素 升序 排列。多个元素的元组亦然。

以上这篇使用Python 统计高频字数的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网页请求urllib2模块简单封装代码
Feb 07 Python
Python中使用PDB库调试程序
Apr 05 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
简单了解Python3 bytes和str类型的区别和联系
Dec 19 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 Python
Python实现文字pdf转换图片pdf效果
Apr 03 Python
python3正则提取字符串里的中文实例
Jan 31 #Python
python统计中文字符数量的两种方法
Jan 31 #Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 #Python
在Python中居然可以定义两个同名通参数的函数
Jan 31 #Python
Python的条件表达式和lambda表达式实例
Jan 31 #Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 #Python
Python3删除排序数组中重复项的方法分析
Jan 31 #Python
You might like
简单的页面缓冲技术
2006/10/09 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
JQuery右键菜单插件ContextMenu使用指南
2014/12/19 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
微信小程序 rich-text的使用方法
2017/08/04 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
详解Python函数式编程—高阶函数
2019/03/29 Python
pandas 层次化索引的实现方法
2019/07/06 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
Python换行与不换行的输出实例
2020/02/19 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
小学生中国梦演讲稿
2014/04/23 职场文书
社区健康教育工作方案
2014/06/03 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技