Python取top N相关的模块:heapq模块

原文:【Python】Python取top N相关的模块:heapq模块_小怪孩的成长之路-CSDN博客_python 取top

最近在程序中需要取一个列表的top 3元素,就是去一个列表中数值最大的3个元素。这可以用Python的heapq模块来处理。

1、对列表取top N:

现在有一个列表myList,需要取出该列表的最大3个元素和最小3个元素,按如下代码所述的简单例子:

test.py

import heapqmyList = [5, 2, 6, 12, 7, 3, 4, 9]topNum = 3nlargestList = heapq.nlargest(topNum, myList) #取最大3个元素nsmallestList = heapq.nsmallest(topNum, myList) #取最小3个元素print nlargestList #输出结果print nsmallestList

我是在Linux环境下,输入:python test.py,就可以运行程序了。

输出结果:

[12, 9, 7]

[2, 3, 4]

没错,这也可以用排序来获得,但是对另外一些情况,排序就比较麻烦了,比如对字典取top N的时候,因为其本身就是无序的,即使排序也不会改变元素在字典中的位置。

2、对字典取top N:

2.1 按字典的key值取top N:

现在有一个字典,想按字典的key值取key值最大的3个元素和key值最小的3个元素,如下代码是一个简单的例子:

test.py

 import heapqmyDict = {1:'a', 3:'d', 8:'g', 5:'m', 9:'t', 4:'s', 2:'u'} #定义一个字典topNum = 3nlargestList = heapq.nlargest(topNum, myDict.keys()) #取key值最大的3个元素nsmallestList = heapq.nsmallest(topNum, myDict.keys()) #取key值最小的3个元素for key in nlargestList: #输出结果print key,myDict[key]for key in nsmallestList:print key,myDict[key]

我是在Linux环境下,输入:python test.py,就可以运行程序了。

输出结果:

9 t
8 g
5 m
1 a
2 u
3 d

从结果可以看出,确实符合要求。

2.2 按字典的value值取top N:

现在有一个字典,想按字典的value值取value值最大的3个元素和value值最小的3个元素,如下一个简单的例子:

test.py

 import heapqmyDict = {1:'a', 3:'d', 8:'g', 5:'m', 9:'t', 4:'s', 2:'u'}topNum = 3nlargestList = heapq.nlargest(topNum, myDict.values()) #取value值最大的3个元素,注意与上一程序区别nsmallestList = heapq.nsmallest(topNum, myDict.values()) #取value值最小的3个元素,注意与上一程序区别for value in nlargestList: #输出结果for key in myDict:if myDict[key] == value:print key,myDict[key]for value in nsmallestList: #输出结果for key in myDict:if myDict[key] == value:print key,myDict[key]

我是在Linux环境下,输入:python test.py,就可以运行程序了。

输出结果:

2 u
9 t
4 s
1 a
3 d
8 g

从结果可以看出,确实符合要求。

希望对大家有所帮助。

Python取top N相关的模块:heapq模块相关推荐

  1. Python heapq模块

    Python heapq模块 heapq模块提供了如下几个函数: 函数 用法 heapq.heappush(heap, item) 把item添加到heap中(heap是一个列表) heapq.hea ...

  2. python分配 使最大的最小_python3中的heapq模块使用

    ###heapq-堆排序算法 heapq实现了一个适合与Python的列表一起使用的最小堆排序算法. 二叉树 树中每个节点至多有两个子节点 满二叉树 树中除了叶子节点,每个节点都有两个子节点 什么是完 ...

  3. Python中的堆实现:heapq 模块——利用堆结构实现快速访问数据流中的中位数

    堆结构 堆结构是一种优先队列,可以以任意顺序添加对象,并随时查找或删除最小(大)的元素,或者查找和删除前 K 个最小(大)元素.相比于列表方法min() / max(),这样做的效率要高得多. 堆结构 ...

  4. python中heapq的库是什么_Python中heapq模块的用法

    heapq 模块提供了堆算法.heapq是一种子节点和父节点排序的树形数据结构.这个模块提供heap[k] <= heap[2*k+1] and heap[k] <= heap[2*k+2 ...

  5. python之堆heapq模块

    python之堆heapq模块 堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小于等于该节点所有子节点的值. 堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆. ...

  6. python 路径往上一层_Python常用模块之模块、包介绍和相关语法

    在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很 ...

  7. python heapq模块使用

    Python内置的heapq模块 Python3.4版本中heapq包含了几个有用的方法: heapq.heappush(heap,item):将item,推入heap >>> it ...

  8. python树状节点 可拖拽_Python 的 heapq 模块源码分析

    原文链接:Python 的 heapq 模块源码分析 起步 heapq 模块实现了适用于Python列表的最小堆排序算法. 堆是一个树状的数据结构,其中的子节点都与父母排序顺序关系.因为堆排序中的树是 ...

  9. Python 的 heapq 模块源码分析

    作者:weapon 来源:https://zhuanlan.zhihu.com/p/54260935 起步 heapq 模块实现了适用于Python列表的最小堆排序算法. 堆是一个树状的数据结构,其中 ...

最新文章

  1. 开源Pravega架构解析:如何通过分层解决流存储的三大挑战?
  2. for循环的一种加速方法
  3. webbrowser填充textarea的问题
  4. HOJ 2278 IP Filtering (二分)
  5. 使用XMANAGER 联接LINUX 后使用SQLPLUS 不能使用BACKSPACE 回格键.
  6. 川大锦城c语言期末考试答案,四川大学《计算机组成原理》2018期末考试B卷答案及评分标准.doc...
  7. apt-get update命令卡在waiting for headers
  8. 【FPGA学习笔记】初次使用FPGA硬件编程编程语言Verilog编写HDL程序03
  9. java 响应式编程_响应式编程
  10. Win10重装系统后bitlocker加密后解密方法
  11. Linux服务器键盘鼠标插口,关于Linux下鼠标键盘
  12. Android沉浸式体验适配方案
  13. 哪种蓝牙耳机好用又实惠?游戏蓝牙耳机推荐
  14. 预测|2021软件测试职业发展趋势,附BAT、TMD入职指南!
  15. 从“中产梦”中醒来,好好打工吧
  16. [跬步]说说如何自主学习
  17. ural 1998 The old Padawan (模拟+二分)
  18. phpnow怎么改php版本,PHPnow升级PHP版本的方法。
  19. 使用python爬取猫眼电影、房王、股吧论坛、百度翻译、有道翻译、高德天气、华夏基金、扇贝单词、糗事百科(股吧论坛)
  20. 离职前需要注意哪些细节?

热门文章

  1. OpenStack Neutron运行机制解析概要
  2. 序列化--反序列化:Schema evolution in Avro, Protocol Buffers and Thrift
  3. HVM guest配置文件
  4. matlab识别不出linux链接,在Ubuntu上,从matlab调用外部脚本失败_linux_开发99编程知识库...
  5. linux查询超线程,【转】Linux下判断一台机器是多少路,多少核,是否超线程的方法...
  6. 代码 抠图_憋再PS抠图了,3行代码给你安排的明明白白!
  7. 用计算机进行图片处理教学设计,三年级信息技术上教学设计
  8. tcp前4字节消息长度_RocketMQ的消息存储格式
  9. 大同锦华计算机学校,2017锦华计算机学校与你在一起!
  10. 显示在一行_使用基于Swift的一行代码自动显示Log,Network,CPU,RAM,FPS等