博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python数据结构-如何统计序列中元素的频度
阅读量:4652 次
发布时间:2019-06-09

本文共 1335 字,大约阅读时间需要 4 分钟。

如何统计序列中元素的频度

问题举例

如何找出随机序列[1, 5, 6, 5, 3, 2, 1, 0, 6, 1, 6]中出现频度最高的3个元素?

如何统计某篇英文文章中词频最高的5个单词?

 

将序列转换成字典(元素:频度),根据字典的值进行排序

列表

from random import randintlist1 = [randint(0, 10) for _ in range(30)]print(list1)dict1 =  dict.fromkeys(list1, 0)for item in list1:    dict1[item] += 1#list comprehensionsdict_res1 = sorted([(v, k) for k, v in dict1.items()], reverse=True)[:3]print(dict_res1)#generator comprehensionsdict_res2 = sorted(((v, k) for k, v in dict1.items()), reverse=True)[:3]print(dict_res2)

分析:使用生成器解析比列表解析节省空间

   当一个列表很大时,我们只需要找到出现频度最高的3个元素,如果我们对整个列表都进行排序,

   这样显然是很浪费的,一般这种情况我们会使用堆排序

 

堆排序

from random import randintimport heapqlist1 = [randint(0, 10) for _ in range(30)]print(list1)dict1 =  dict.fromkeys(list1, 0)for item in list1:    dict1[item] += 1res = heapq.nlargest(3, ((v, k) for k, v in dict1.items()))print(res)

 

使用collections中的Counter对象

from random import randintfrom collections import Counterlist1 = [randint(0, 10) for _ in range(30)]print(list1)dict1 =  dict.fromkeys(list1, 0)for item in list1:    dict1[item] += 1counter1 = Counter(dict1)res = counter1.most_common(3)print(res)

 

词频统计栗子

import refrom collections import Countertxt = open('note.txt').read()word_list = re.split('\W+', txt)counter1 = Counter(word_list)res = counter1.most_common(3)print(res)

 

参考资料:

转载于:https://www.cnblogs.com/marton/p/10744095.html

你可能感兴趣的文章
网页如何实现下载功能
查看>>
IT男专用表白程序
查看>>
读《大道至简》第六章感想
查看>>
ef linq 中判断实体中是否包含某集合
查看>>
章三 链表
查看>>
Solution for Concurrent number of AOS' for this application exceeds the licensed number
查看>>
CSE 3100 Systems Programming
查看>>
IntelliJ IDEA 的Project structure说明
查看>>
Java Security(JCE基本概念)
查看>>
Linux Supervisor的安装与使用入门
查看>>
创建 PSO
查看>>
JasperReport报表设计4
查看>>
项目活动定义 概述
查看>>
团队冲刺04
查看>>
我的Python分析成长之路8
查看>>
泛型在三层中的应用
查看>>
SharePoint2010 -- 管理配置文件同步
查看>>
.Net MVC3中取得当前区域的名字(Area name)
查看>>
获得屏幕像素以及像素密度
查看>>
int与string转换
查看>>