使用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类继承用法实例分析
Oct 10 Python
Python中的推导式使用详解
Jun 03 Python
用Python解决计数原理问题的方法
Aug 04 Python
python通过opencv实现批量剪切图片
Nov 13 Python
Django数据库表反向生成实例解析
Feb 06 Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 Python
Python 确定多项式拟合/回归的阶数实例
Dec 29 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
Python学习笔记之文件的读写操作实例分析
Aug 07 Python
django 取消csrf限制的实例
Mar 13 Python
Python 多线程之threading 模块的使用
Apr 14 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 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
PHP array操作10个小技巧分享
2011/06/23 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
php上传excel表格并获取数据
2017/04/27 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
python处理PHP数组文本文件实例
2014/09/18 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
python切片及sys.argv[]用法详解
2018/05/25 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
网络工程专业毕业生推荐信
2013/10/28 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
居安思危观后感
2015/06/11 职场文书
结婚十年感言
2015/07/31 职场文书
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP
MySQL常见优化方案汇总
2022/01/18 MySQL