使用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实现LRU算法的2种方法
Jun 24 Python
Python自动化运维之IP地址处理模块详解
Dec 10 Python
PYQT5实现控制台显示功能的方法
Jun 25 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
python3 配置logging日志类的操作
Apr 08 Python
Python如何执行系统命令
Sep 23 Python
python自动生成证件号的方法示例
Jan 14 Python
Pytorch 使用tensor特定条件判断索引
Apr 08 Python
图神经网络GNN算法
May 11 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替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
JS支持带x身份证号码验证函数
2008/08/10 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
Python中的取模运算方法
2018/11/10 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
大学生村官任职感言
2014/01/09 职场文书
考试退步检讨书
2014/01/15 职场文书
北京大学自荐信范文
2014/01/28 职场文书
教学改革实施方案
2014/03/31 职场文书
秋天的雨教学反思
2014/04/27 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS
代码复现python目标检测yolo3详解预测
2022/05/06 Python