我有以下情景 -
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项。我知道这里的项目是元组,所以第三项显然很小。
但是有什么方法可以分别存储优先级和字符串,并且如果存在平局,则按照插入的顺序返回项目。
由于
答案 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')