使用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之通过Python连接数据库
Oct 28 Python
将Python代码打包为jar软件的简单方法
Aug 04 Python
Python变量赋值的秘密分享
Apr 03 Python
Python批量发送post请求的实现代码
May 05 Python
Python get获取页面cookie代码实例
Sep 12 Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
python3转换code128条形码的方法
Apr 17 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
python3 动态模块导入与全局变量使用实例
Dec 22 Python
Django修改app名称和数据表迁移方案实现
Sep 17 Python
Python基础知识之变量的详解
Apr 14 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世纪万年历
2006/12/06 PHP
php5中类的学习
2008/03/28 PHP
PHP删除数组中空值的方法介绍
2014/04/14 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
php生出随机字符串
2017/07/06 PHP
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
jQuery在iframe中无法弹出对话框的解决方法
2014/01/12 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
Node 自动化部署的方法
2017/10/17 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
python实现dict版图遍历示例
2014/02/19 Python
Python中的CURL PycURL使用例子
2014/06/01 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
python 重命名轴索引的方法
2018/11/10 Python
Python实现的爬取豆瓣电影信息功能案例
2019/09/15 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
python中常用的数据结构介绍
2021/01/12 Python
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
农村产权制度改革实施方案
2014/03/21 职场文书
党员干部公开承诺书
2014/03/26 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android