使用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设计模式之观察者模式实例
Apr 26 Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 Python
使用Python的判断语句模拟三目运算
Apr 24 Python
举例讲解Python中的身份运算符的使用方法
Oct 13 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
Sep 22 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
python3获取当前目录的实现方法
Jul 29 Python
PyInstaller的安装和使用的详细步骤
Jun 02 Python
Python读取yaml文件的详细教程
Jul 21 Python
Python __slots__的使用方法
Nov 15 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 03 Python
一起来学习Python的元组和列表
Mar 13 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
简单的Python抓taobao图片爬虫
2014/10/26 Python
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
python从子线程中获得返回值的方法
2019/01/30 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
python 表格打印代码实例解析
2019/10/12 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
食品安全演讲稿
2014/09/01 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android
我去timi了,一起去timi是什么意思?
2022/04/13 杂记