使用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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
Python中input和raw_input的一点区别
Oct 21 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
Python使用正则表达式获取网页中所需要的信息
Jan 29 Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 Python
在python中安装basemap的教程
Sep 20 Python
在python里从协程返回一个值的示例
Feb 19 Python
python常用运维脚本实例小结
Feb 14 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
Jun 02 Python
python中rc1什么意思
Jun 19 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
Python和Bash结合在一起的方法
Nov 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
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
Python常用模块用法分析
2014/09/08 Python
Python中subprocess的简单使用示例
2015/07/28 Python
5款非常棒的Python工具
2018/01/05 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
网络安全方面的面试题
2015/11/04 面试题
副总经理工作职责
2013/11/28 职场文书
大学军训感想
2014/02/12 职场文书
会计自荐信范文
2014/03/09 职场文书
环保倡议书100字
2014/05/15 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
招商银行收入证明
2015/06/17 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python