使用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实现网站的模拟登录
Jan 04 Python
详解Python中表达式i += x与i = i + x是否等价
Feb 08 Python
Python实现一个转存纯真IP数据库的脚本分享
May 21 Python
python库lxml在linux和WIN系统下的安装
Jun 24 Python
浅谈Python反射 &amp; 单例模式
Mar 21 Python
python实现nao机器人手臂动作控制
Apr 29 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
python Tkinter的图片刷新实例
Jun 14 Python
python pandas获取csv指定行 列的操作方法
Jul 12 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
Python脚本实现Zabbix多行日志监控过程解析
Aug 26 Python
Python图片处理之图片裁剪教程
May 27 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 strtotime函数详解
2009/12/18 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
jQuery实现网站添加高亮突出显示效果的方法
2015/06/26 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
2019/01/08 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
Python重新引入被覆盖的自带function
2014/07/16 Python
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
中学运动会广播稿
2014/01/19 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
人民教师求职自荐信
2014/03/12 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
依法行政工作汇报材料
2014/10/28 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
英语复习计划
2015/01/19 职场文书
银行自荐信范文
2015/03/25 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis