将项添加到优先级队列中

时间:2014-04-23 04:53:01

标签: python priority-queue

Python中Queue.PriorityQueue类的文档如下所示:

https://docs.python.org/2/library/queue.html#Queue.PriorityQueue

它说,“条目的典型模式是形式中的元组:( priority_number,data)”

但是,当我尝试将基本数据输入到优先级队列时,我得到:

from Queue import PriorityQueue
pq = PriorityQueue()
pq.put(1, "one")
pq.put(2, "two")
pq.put(3, "three")
pq.get()
1
pq.get()
2
pq.get()
3

pq.put()中的第一个值不是优先级,第二个值是数据吗?看起来这是相反的。然后,当我尝试输入(数据,优先级)时,我得到:

from Queue import PriorityQueue
pq = PriorityQueue()
pq.put("two", 4)
pq.put("one", 2)
pq.put("three", 6)
pq.get()
'one'
pq.get()
'three'
pq.get()
'two'

这不正确,因为它应输出“一,二,三” 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

第一个值是优先级。最低优先级首先出现在队列中,所以你的第一个例子是有道理的。第二个例子也是正确的,因为按字母顺序排列"one" < "three" < "two"。它将您的字符串视为优先级并按它们排序。正如它在您链接的页面上所说:

“首先检索最低值的条目(最低值条目是按排序(列表(条目))返回的条目[0])。”

你也可能想把元组放入队列,我不确定,例如。

pq.put((1, "some data"))
pq.put((2, "some lower priority data"))