#! /usr/bin/python3
# ==================================================================
# From: www.youtube.com/watch?v=o9pEzgHorH0
# Stop Writing Classes (YouTube)
# ==================================================================
#
# heapq module provides an implementation of the heap queue
# algorithm, also known as the priority queue algorithm.
#
# See: https://docs.python.org/3/library/heapq.html
#
# ==================================================================
import heapq
class Heap(object):
def __init__(self, data=None, key=lambda x:None):
self.heap = data or []
heapq.heapify(self.heap)
self.key = key
def pushleft(self, item):
if self.key:
item = (self.key(item), item)
##heapq.pushleft(self.heap, item)
heapq.heappush(self.heap, item)
def popleft(self):
##return heapq.popleft(self.heap)[1]
return heapq.heappop(self.heap)[1]
# ------------------------------------------------------------------
# main
# ------------------------------------------------------------------
if __name__ == '__main__':
pq = Heap()
pq.pushleft('abc')
pq.pushleft('xyz')
pq.pushleft('bcd')
pq.pushleft('cde')
while True:
item = pq.popleft()
if not item:
brerak
print(item)