使用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中使用logging模块代替print(logging简明指南)
Jul 09 Python
python实现根据窗口标题调用窗口的方法
Mar 13 Python
使用Python实现一个简单的项目监控
Mar 31 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
Python实现的基数排序算法原理与用法实例分析
Nov 23 Python
python+pygame简单画板实现代码实例
Dec 13 Python
python多维数组切片方法
Apr 13 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 Python
Python+threading模块对单个接口进行并发测试
Jun 25 Python
python二进制文件的转译详解
Jul 03 Python
Python读取图像并显示灰度图的实现
Dec 01 Python
在Pycharm中安装Pandas库方法(简单易懂)
Feb 20 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下使用strpos需要注意 === 运算符
2010/07/17 PHP
如何用php生成扭曲及旋转的验证码图片
2013/06/07 PHP
php curl模拟post提交数据示例
2013/12/31 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
js的event详解。
2006/09/06 Javascript
Use Word to Search for Files
2007/06/15 Javascript
JS中==与===操作符的比较
2009/03/21 Javascript
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
ExtJS 入门
2010/10/29 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
师范生实习个人的自我评价
2013/09/28 职场文书
机电一体化专业应届生求职信
2013/11/27 职场文书
母亲七十大寿答谢词
2014/01/18 职场文书
学生自我评价范文
2014/02/02 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android
MYSQL如何查看操作日志详解
2022/05/30 MySQL