python数据结构-如何统计序列中元素的频度
如何统计序列中元素的频度
问题举例
如何找出随机序列[1, 5, 6, 5, 3, 2, 1, 0, 6, 1, 6]中出现频度最高的3个元素?
如何统计某篇英文文章中词频最高的5个单词?
将序列转换成字典(元素:频度),根据字典的值进行排序
列表
from random import randint
list1 = [randint(0, 10) for _ in range(30)]
print(list1)
dict1 = dict.fromkeys(list1, 0)
for item in list1:
dict1[item] += 1 #list comprehensions
dict_res1 = sorted([(v, k) for k, v in dict1.items()], reverse=True)[:3]
print(dict_res1) #generator comprehensions
dict_res2 = sorted(((v, k) for k, v in dict1.items()), reverse=True)[:3]
print(dict_res2)
分析:使用生成器解析比列表解析节省空间
当一个列表很大时,我们只需要找到出现频度最高的3个元素,如果我们对整个列表都进行排序,
这样显然是很浪费的,一般这种情况我们会使用堆排序
堆排序
from random import randint
import heapq list1 = [randint(0, 10) for _ in range(30)]
print(list1)
dict1 = dict.fromkeys(list1, 0)
for item in list1:
dict1[item] += 1 res = heapq.nlargest(3, ((v, k) for k, v in dict1.items()))
print(res)
使用collections中的Counter对象
from random import randint
from collections import Counter list1 = [randint(0, 10) for _ in range(30)]
print(list1)
dict1 = dict.fromkeys(list1, 0)
for item in list1:
dict1[item] += 1 counter1 = Counter(dict1)
res = counter1.most_common(3)
print(res)
词频统计栗子
import re
from collections import Counter txt = open('note.txt').read()
word_list = re.split('\W+', txt) counter1 = Counter(word_list)
res = counter1.most_common(3)
print(res)
参考资料:python3实用编程技巧进阶
python数据结构-如何统计序列中元素的频度的更多相关文章
- 如何统计序列中元素的频度---Python数据结构与算法相关问题与解决技巧
实际案例: 1. 某随机序列 [12,5,6,4,6,5,5,7]中,找到出现次数最高的3个元素,它们出现的次数是多少? 2. 对于某英文文章的单词,进行词频统计,找到出现次数最高的10个单词,它们出 ...
- Python - 如何统计序列中元素出现的频次
1.用内置的count()方法,该方法返回子字符串在字符串中出现的次数(同样适用于列表)2.用collections模块的Counter类 示例: from collections import Co ...
- python 学习笔记(四) 统计序列中元素出现的频度(即次数)
案例一:在某随机序例中,找到出现频度最高的3个元素,它们出现的次数是多少? from random import randint # 利用列表解析器生成随机序列,包含有30个元素 data = [ra ...
- Python中用dict统计列表中元素出现的次数
01 Python增加元素,不像其他语言使用现实的操作接口,只需要dict[1]=3,如果字典中不存在1,则直接新增元素键值对(1,3),如果存在则替换键1为3. if key in dict:判断出 ...
- python_如何统计序列中元素
问题1: 随机数列[12,5,8,7,8,9,4,8,5,...] 中出现次数最高的3个元素,他们出现的次数 问题2: 对某英文文章的单词,进行词频统计,找出出现次数最搞得10个单词,他们出现的次数是 ...
- python基础一 ------如何统计一个列表元素的频度
如何统计一个列表元素的频度 两个需求: 1,统计一个随机序列[1,2,3,4,5,6...]中的出现次数前三的元素及其次数 2,统计一片英文文章中出现次数前10 的单词 两种方法: 1,普通的for循 ...
- 1、如何在列表,字典,集合种根据条件筛选数据?2、如何为元组中的每个元素命名,提高程序的可读性3、如何统计出序列中元素出现的频度4、如何根据字典中value的大小,对字典的key进行排序
一.数据筛选: 处理方式: 1.filter函数在py3,返回的是个生成式. from random import randint data = [randint(-100,100) for i in ...
- Python 中遍历序列中元素和下标
enumerate 函数用于遍历序列中的元素以及它们的下标 for i,v in enumerate(['tic','tac','toe']): print i,v #0 tic #1 tac #2 ...
- python数据结构-如何为元组中的每个元素命名
如何为元组中的每个元素命名 简述 当对象数据格式固定时,用元组比列表更节省内存空间, 我们使用索引访问元组元素,但是这种访问方式会降低程序的可读性. 举个栗子 对于学生的信息,我们有固定的数据格式,我 ...
随机推荐
- Replication基础(六) 复制中的三个线程(IO/SQL/Dump)
Reference: https://blog.csdn.net/sun_ashe/article/details/82181811?utm_source=blogxgwz1 简介在MySQL复制技 ...
- 如何使用maven优雅地管理项目版本号
原文: https://blog.csdn.net/TeleDCOS/article/details/79853782
- 6. 从Encoder-Decoder(Seq2Seq)理解Attention的本质
1. 语言模型 2. Attention Is All You Need(Transformer)算法原理解析 3. ELMo算法原理解析 4. OpenAI GPT算法原理解析 5. BERT算法原 ...
- Linux零基础入门第四课
根据直播讲义整理的内容,从第四课开始.前三课的内容若后面有精力会一并整理进来. 文件的基本操作(上) 创建.删除.复制.移动和重命名 touch命令创建文件 语法 >$ touch file0 ...
- 【iCore4 双核心板_ARM】例程三十八:DSP MATH库测试
实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ int i,j; int res; ]; ; /* USER CODE END 1 */ /* ...
- C语言 · 关联账户
标题:关联账户 为增大反腐力度,某地警方专门支队,对若干银行账户展开调查. 如果两个账户间发生过转账,则认为有关联.如果a,b间有关联, b,c间有关联,则认为a,c间也有关联. 对于调查范围内的n个 ...
- iOS电量获取
一.Ios获取方法 Instrument电量工具获取 操作步骤: a) 手机不能连接数据线,kill掉后台所有app进程 b) 点击设置,选择开发,点击Logging,开启Energy,点击Start ...
- springboot-custom starter
Spring Boot由众多Starter组成,随着版本的推移Starter家族成员也与日俱增.在传统Maven项目中通常将一些层.组件拆分为模块来管理, 以便相互依赖复用,在Spring Boot项 ...
- SpirngBoot之整合Swagger2
前言 swagger,中文"拽"的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅, 而且还提供了在线文档的测试.另外swagger很容易构建rest ...
- Cesium简单使用
CesiumJS是一个基于javascript的浏览器器3d地图引擎 下载 https://cesiumjs.org/downloads/ 下载的Cesium-1.56.1,解压后的结构为 1.设置W ...