heapq

import heapq
import random

nums = [random.randrange(20) for i in range(20)]
print(nums)
print(heapq.nlargest(3,nums))
print(heapq.nsmallest(3,nums))
a = [
    {'num':100, 'price':200},
    {'num':178, 'price':600},
    {'num':10, 'price':250},
    {'num':1080, 'price':8400},
    {'num':1200, 'price':26700},
]
cheap = heapq.nsmallest(2,a, key=lambda s:s['price'])
expensive = heapq.nlargest(2, a,key=lambda  s : s['price'])
print(cheap)
print(expensive)

优先级队列

import heapq
class PriorityQueue():
    def __init__(self):
        self._queue = []
        self._index = 0

    def push(self, item, priority):
        heapq.heappush(self._queue,(-priority, self._index, item))#优先级为负数使得元素按照从高到低排序
        self._index += 1 #保证同等优先级的元素排序的正确性

    def pop(self):
        return heapq.heappop(self._queue)[-1]

class Item():

    def __init__(self, name):
        self.name = name
    def __repr__(self):
        return  'Item({!r})'.format(self.name)

q = PriorityQueue()
q.push(Item('foo1'),1)
q.push(Item('foo2'),2)
q.push(Item('foo3'),6)
q.push(Item('foo4'),5)
q.push(Item('foo5'),1)
print(q.pop())
print(q.pop())
print(q.pop())

a = (1,0,Item('test1'))#元组
b = (7,0,Item('test2'))#元组

print(a<b)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值