python Cookbook

Posted heyaqiong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python Cookbook相关的知识,希望对你有一定的参考价值。

1.5 heapq模块实现一个优先级队列

#实现优先级队列
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]

    def __get__(self):#get(),set()
        return self._queue

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


q=PriorityQueue()
q.push(Item(foo),1)
q.push(Item(bar),5)
q.push(Item(spam),4)
q.push(Item(grop),1)

q.pop()#bar
q.pop()#spam
q.pop()#foo
print(q.__get__())

 

以上是关于python Cookbook的主要内容,如果未能解决你的问题,请参考以下文章

Python Cookbook(第3版)中文版:15.9 用WSIG包装C代码

python cookbook第三版学习笔记九:函数

《Python cookbook》 “定义一个属性可由用户修改的装饰器” 笔记

Python Cookbook(第3版)中文版:14.12 调试基本的程序崩溃错误

[Python Cookbook] Pandas Groupby

python cookbook第三版学习笔记七:python解析csv,json,xml文件