【学习】python每天进步一点点-优先队列

经常要用到优先队列,queue里面有一个PriorityQueue,官方介绍在这里 用法有点奇怪,我还是乖乖的用heapq,官方文档在这里
【学习】python每天进步一点点-优先队列

-*- 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]

参考:

  1. https://*.com/questions/8875706/heapq-with-custom-compare-predicate