关注互联网应用及运维技术的个人博客

heapq标准库模块

可用于取一个列表中的最大的几个数,或者最小的几个数

import heapq 
s = [1,4,5,78,96,84,52,12,-5,6]

取最大的三个数

heapq.nlargest(3,s)  # [96, 84, 78]

取最小的两个数

heapq.nsmallest(2,s)  # [-5, 1]

也可以对字典进行过滤 ,需要指定nsmallest/nlargest的key值

import heapq
data = [
    {'name':'aa',"age":50},
    {'name':'bb',"age":40},
    {'name':'cc',"age":30},
    {'name':'dd',"age":20},
    {'name':'ee',"age":10},
]
print(heapq.nsmallest(3,data,key=lambda s:s["age"]))
print(heapq.nlargest(3,data,key=lambda s:s["age"]))

也可以使用itemgetter函数

import heapq
from operator import itemgetter

data = [
    {'name':'aa',"age":50},
    {'name':'bb',"age":40},
    {'name':'cc',"age":30},
    {'name':'dd',"age":20},
    {'name':'ee',"age":10},
]
# 使用itemgetter可以对多个值进行过滤
print(heapq.nsmallest(3,data,key=data,key=itemgetter("age")))
print(heapq.nlargest(3,data,key=data,key=itemgetter("age")))
赞(0)
未经允许不得转载:飞天狒狒 » heapq标准库模块

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址