【学习】python每天进步一点点-优先队列
经常要用到优先队列,queue
里面有一个PriorityQueue
,官方介绍在这里 用法有点奇怪,我还是乖乖的用heapq
,官方文档在这里
-*- coding: utf-8 -*-
import heapq
class MyHeap(object):
def __init__(self, initial=None, key=lambda x:x):
self.key = key
if initial:
self._data = [(key(item), item) for item in initial]
heapq.heapify(self._data)
else:
self._data = []
def push(self, item):
heapq.heappush(self._data, (self.key(item), item))
def pop(self):
return heapq.heappop(self._data)[1]
参考: