使用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 09 Python
Python中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 Python
详解appium+python 启动一个app步骤
Dec 20 Python
sublime python3 输入换行不结束的方法
Apr 19 Python
实践Vim配置python开发环境
Jul 02 Python
Linux CentOS Python开发环境搭建教程
Nov 28 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
pytorch数据预处理错误的解决
Feb 20 Python
python实现翻译word表格小程序
Feb 27 Python
Python实现aes加密解密多种方法解析
May 15 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与MySQL交互使用详解
2006/10/09 PHP
php cli换行示例
2014/04/22 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
Prototype使用指南之ajax
2007/01/10 Javascript
wordpress之js库集合研究介绍
2007/08/17 Javascript
JavaScript 的方法重载效果
2009/08/07 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
JavaScript分步实现一个出生日期的正则表达式
2018/03/22 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
Python实现基于权重的随机数2种方法
2015/04/28 Python
Python简单读取json文件功能示例
2017/11/30 Python
Python扩展内置类型详解
2018/03/26 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
几道数据库的面试题或笔试题
2014/05/31 面试题
实习自我鉴定
2013/12/15 职场文书
生物制药自我鉴定
2014/01/25 职场文书
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
《日月潭》教学反思
2014/02/28 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
答谢词范文
2015/01/05 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
龙猫观后感
2015/06/09 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers