使用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基于右递归解决八皇后问题的方法
May 25 Python
python中enumerate函数遍历元素用法分析
Mar 11 Python
python删除过期log文件操作实例解析
Jan 31 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
使用实现pandas读取csv文件指定的前几行
Apr 20 Python
对Python信号处理模块signal详解
Jan 09 Python
Django实现学员管理系统
Feb 26 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 Python
Django实现web端tailf日志文件功能及实例详解
Jul 28 Python
基于pycharm实现批量修改变量名
Jun 02 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
python基础之文件处理知识总结
May 23 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
77A一级收信机修理记
2021/03/02 无线电
基于mysql的论坛(5)
2006/10/09 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
浅谈Python实现2种文件复制的方法
2018/01/19 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
英语专业学生个人求职信
2014/01/28 职场文书
业务员的岗位职责
2014/03/15 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
欢迎领导检查标语
2014/06/27 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
美术教师个人工作总结
2015/02/06 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
Mysql中存储引擎的区别及比较
2021/06/04 MySQL
Python机器学习之底层实现KNN
2021/06/20 Python