使用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使用代理抓取网站图片(多线程)
Mar 14 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
Python pass详细介绍及实例代码
Nov 24 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
在Python中关于使用os模块遍历目录的实现方法
Jan 03 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
May 16 Python
Python安装与基本数据类型教程详解
May 29 Python
PyQt QListWidget修改列表项item的行高方法
Jun 20 Python
python实现简单井字棋小游戏
Mar 05 Python
利用python实现平稳时间序列的建模方式
Jun 03 Python
python3访问字典里的值实例方法
Nov 18 Python
python中xlutils库用法浅析
Dec 29 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
模拟xcopy的函数
2006/10/09 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
vue-devtools的安装步骤
2018/04/23 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
python中cPickle用法例子分享
2014/01/03 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
python怎么对数字进行过滤
2020/07/05 Python
如何在python中实现线性回归
2020/08/10 Python
python selenium xpath定位操作
2020/09/01 Python
网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
2016/03/27 面试题
初中家长寄语
2014/04/02 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
python通过新建环境安装tfx的问题
2022/05/20 Python