具有重复键的python中的优先级队列

时间:2015-02-10 13:07:19

标签: python priority-queue

我有以下情景 -

In [2]: from heapq import heappush, heappop

In [3]: pq =[]

In [4]: heappush(pq, (2, "I hate sth"))

In [5]: heappush(pq, (2, "I love sth"))

In [6]: heappush(pq, (2, "I gate sth"))

In [7]: heappop(pq)
Out[7]: (2, 'I gate sth')

这里我想要堆返回(2, "I hate sth")我的意思是如果有任何重复,那么它应该返回最先插入的min项。我知道这里的项目是元组,所以第三项显然很小。

但是有什么方法可以分别存储优先级和字符串,并且如果存在平局,则按照插入的顺序返回项目。

由于

1 个答案:

答案 0 :(得分:-1)

使用PriorityQueue类-它按添加顺序返回对象

from queue import PriorityQueue

q=PriorityQueue()

q.put((1,'eat'))
q.put((2,'code1'))
q.put((2,'code2'))
q.put((2,'code3'))
q.put((3,'sleep'))

while(not q.empty()):
    print(q.get())

# Output
# (1, 'eat')
# (2, 'code1')
# (2, 'code2')
# (2, 'code3')
# (3, 'sleep')