使用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中的list列表数据结构用法
Mar 12 Python
使用python实现生成用户信息
Mar 20 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
Python 批量合并多个txt文件的实例讲解
May 08 Python
python实现简单加密解密机制
Mar 19 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
python文件和文件夹复制函数
Feb 07 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
python 双循环遍历list 变量判断代码
May 04 Python
用python删除文件夹中的重复图片(图片去重)
May 12 Python
详细总结Python常见的安全问题
May 21 Python
python文本处理的方案(结巴分词并去除符号)
May 26 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
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
PHP读取PDF内容配合Xpdf的使用
2012/11/24 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
vue脚手架及vue-router基本使用
2018/04/09 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
决策树的python实现方法
2014/11/18 Python
python列表操作之extend和append的区别实例分析
2015/07/28 Python
Django内容增加富文本功能的实例
2017/10/17 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
python安装本地whl的实例步骤
2019/10/12 Python
Python argparse模块应用实例解析
2019/11/15 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
社区八一活动方案
2014/02/03 职场文书
采购求职信
2014/03/17 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
学校推普周活动总结
2015/05/07 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
Python实现单例模式的5种方法
2021/06/15 Python