使用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中的is和id用法分析
Jan 26 Python
Python Web框架Flask中使用新浪SAE云存储实例
Feb 08 Python
基于Python 装饰器装饰类中的方法实例
Apr 21 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
利用Python产生加密表和解密表的实现方法
Oct 15 Python
python numpy--数组的组合和分割实例
Feb 24 Python
python 安装impala包步骤
Mar 28 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 Python
Python Mock模块原理及使用方法详解
Jul 07 Python
Python使用jpype模块调用jar包过程解析
Jul 29 Python
Python计算矩阵的和积的实例详解
Sep 10 Python
Python面向对象之成员相关知识总结
Jun 24 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
轻松修复Discuz!数据库
2008/05/03 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
JS delegate与live浅析
2013/12/21 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
Python中的XML库4Suite Server的介绍
2015/04/14 Python
python3安装speech语音模块的方法
2018/12/24 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
python raise的基本使用
2020/09/10 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
python openpyxl模块的使用详解
2021/02/25 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
汽车专业求职信
2014/06/05 职场文书
计算机实训报告范文
2014/11/05 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
学校体育节班级口号
2015/12/25 职场文书
禁毒心得体会范文
2016/01/15 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记
python和anaconda的区别
2022/05/06 Python