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

问题举例

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

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

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

列表

  1. from random import randint
  2. list1 = [randint(0, 10) for _ in range(30)]
  3. print(list1)
  4. dict1 = dict.fromkeys(list1, 0)
  5. for item in list1:
  6. dict1[item] += 1
  7.  
  8. #list comprehensions
  9. dict_res1 = sorted([(v, k) for k, v in dict1.items()], reverse=True)[:3]
  10. print(dict_res1)
  11.  
  12. #generator comprehensions
  13. dict_res2 = sorted(((v, k) for k, v in dict1.items()), reverse=True)[:3]
  14. print(dict_res2)

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

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

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

堆排序

  1. from random import randint
  2. import heapq
  3.  
  4. list1 = [randint(0, 10) for _ in range(30)]
  5. print(list1)
  6. dict1 = dict.fromkeys(list1, 0)
  7. for item in list1:
  8. dict1[item] += 1
  9.  
  10. res = heapq.nlargest(3, ((v, k) for k, v in dict1.items()))
  11. print(res)

使用collections中的Counter对象

  1. from random import randint
  2. from collections import Counter
  3.  
  4. list1 = [randint(0, 10) for _ in range(30)]
  5. print(list1)
  6. dict1 = dict.fromkeys(list1, 0)
  7. for item in list1:
  8. dict1[item] += 1
  9.  
  10. counter1 = Counter(dict1)
  11. res = counter1.most_common(3)
  12. print(res)

词频统计栗子

  1. import re
  2. from collections import Counter
  3.  
  4. txt = open('note.txt').read()
  5. word_list = re.split('\W+', txt)
  6.  
  7. counter1 = Counter(word_list)
  8. res = counter1.most_common(3)
  9. print(res)

参考资料:python3实用编程技巧进阶

python数据结构-如何统计序列中元素的频度的更多相关文章

  1. 如何统计序列中元素的频度---Python数据结构与算法相关问题与解决技巧

    实际案例: 1. 某随机序列 [12,5,6,4,6,5,5,7]中,找到出现次数最高的3个元素,它们出现的次数是多少? 2. 对于某英文文章的单词,进行词频统计,找到出现次数最高的10个单词,它们出 ...

  2. Python - 如何统计序列中元素出现的频次

    1.用内置的count()方法,该方法返回子字符串在字符串中出现的次数(同样适用于列表)2.用collections模块的Counter类 示例: from collections import Co ...

  3. python 学习笔记(四) 统计序列中元素出现的频度(即次数)

    案例一:在某随机序例中,找到出现频度最高的3个元素,它们出现的次数是多少? from random import randint # 利用列表解析器生成随机序列,包含有30个元素 data = [ra ...

  4. Python中用dict统计列表中元素出现的次数

    01 Python增加元素,不像其他语言使用现实的操作接口,只需要dict[1]=3,如果字典中不存在1,则直接新增元素键值对(1,3),如果存在则替换键1为3. if key in dict:判断出 ...

  5. python_如何统计序列中元素

    问题1: 随机数列[12,5,8,7,8,9,4,8,5,...] 中出现次数最高的3个元素,他们出现的次数 问题2: 对某英文文章的单词,进行词频统计,找出出现次数最搞得10个单词,他们出现的次数是 ...

  6. python基础一 ------如何统计一个列表元素的频度

    如何统计一个列表元素的频度 两个需求: 1,统计一个随机序列[1,2,3,4,5,6...]中的出现次数前三的元素及其次数 2,统计一片英文文章中出现次数前10 的单词 两种方法: 1,普通的for循 ...

  7. 1、如何在列表,字典,集合种根据条件筛选数据?2、如何为元组中的每个元素命名,提高程序的可读性3、如何统计出序列中元素出现的频度4、如何根据字典中value的大小,对字典的key进行排序

    一.数据筛选: 处理方式: 1.filter函数在py3,返回的是个生成式. from random import randint data = [randint(-100,100) for i in ...

  8. Python 中遍历序列中元素和下标

    enumerate 函数用于遍历序列中的元素以及它们的下标 for i,v in enumerate(['tic','tac','toe']): print i,v #0 tic #1 tac #2 ...

  9. python数据结构-如何为元组中的每个元素命名

    如何为元组中的每个元素命名 简述 当对象数据格式固定时,用元组比列表更节省内存空间, 我们使用索引访问元组元素,但是这种访问方式会降低程序的可读性. 举个栗子 对于学生的信息,我们有固定的数据格式,我 ...

随机推荐

  1. 【Java】设计模型-五种单例模型

    一. 什么是单例模式 只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在. 单例模式有很多好处,它能够 ...

  2. Python实现正则表达式匹配任意的邮箱

    首先来个简单的例子,利用Python实现匹配163邮箱的代码: #-*- coding:utf-8 -*- __author__ = '杨鑫' import re text = input(" ...

  3. Tomcat 配置详解/优化方案(转)

    转载地址:https://blog.csdn.net/cicada688/article/details/14451541/ Service.xml Server.xml配置文件用于对整个容器进行相关 ...

  4. 刷机补丁包updater-script脚本

    1.单刷补丁包 新建META-INF文件夹,新建txt文件命名为:updater-script新建system文件夹,在里面新建app文件夹,把你要单刷的apk放进app文件夹在updater-scr ...

  5. 【转】导致SQL执行慢的原因

    索引对大数据的查询速度的提升是非常大的,Explain可以帮你分析SQL语句是否用到相关索引. 索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本.MySQL在300万条记录左 ...

  6. HDFS基础

    1. HDFS Shell基础 [root@master hadoop]# hadoop fsUsage: hadoop fs [generic options] [-appendToFile < ...

  7. 【Clojure 基本知识】 关于函数参数的各种高级用法

    关于Clojure函数参数用法,学习中一些总结,无废话,直接看代码: 一.接受不定参数 ;;接受不定参数 (defn f0[& pms] (println "params count ...

  8. Thinkphp5.1 模板路径报错

    版本:5.1.24   ,windows环境 报错: 模板文件不存在:template\index\default\index\index.html 1.报错原因:linux/windows   对大 ...

  9. 【2019年04月09日】A股净资产收益率ROE最高排名

    个股滚动ROE = 最近4个季度的归母净利润 / ((期初归母净资产 + 期末归母净资产) / 2). 查看更多个股ROE最高排名. 沈阳机床(SZ000410) - 滚动ROE:251.45% - ...

  10. Spring 注入枚举数组

    在spring的配置文件xml中 示例: <!--注入枚举数組--> <bean id="writeMapNullValue" class="org.s ...