Python 将项目添加到优先级队列
Python中Queue.PriorityQueue类的文档如下所示: 它说,“条目的典型模式是一个元组,其形式为:(优先级,数字) 但是,当我尝试将基本数据输入优先级队列时,我得到:Python 将项目添加到优先级队列,python,priority-queue,Python,Priority Queue,Python中Queue.PriorityQueue类的文档如下所示: 它说,“条目的典型模式是一个元组,其形式为:(优先级,数字) 但是,当我尝试将基本数据输入优先级队列时,我得到: 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(1, "one")
pq.put(2, "two")
pq.put(3, "three")
pq.get()
1
pq.get()
2
pq.get()
3
pq.put()中的第一个值不是优先级,第二个值是数据吗?这似乎是相反的。然后,当我尝试输入(数据、优先级)时,我得到:
这不是正确的顺序,因为它应该输出“一,二,三”
有什么想法吗?第一个价值观是优先权。最低优先级首先来自队列,因此第一个示例很有意义。第二个例子也是正确的,因为按字母顺序排列的是“一”<“三”<“二”。它将字符串视为优先级并按其排序。正如你链接的页面上所说: “首先检索值最低的条目(值最低的条目是排序(列表(条目))[0]返回的条目)。” 另外,您可能希望将元组放入队列中,我不确定,例如
pq.put((1, "some data"))
pq.put((2, "some lower priority data"))
哦,好吧,我想我明白了,那么,pq.put(1,“1”),pq.put(2,“2”)中的“1”和“2”字符串是否被完全忽略了?我认为优先级数字被忽略了,pq.get()只返回了数据是的,我认为“1”和“2”字符串被忽略了。任何对象都可以放入队列,get方法使用它们的自然排序顺序返回队列中的对象。PriorityQueue类本身不知道“优先级”;您可以使用(优先级、数据)元组来模拟它们。这里有用的例子:我认为您传递给
pq.put((1, "some data"))
pq.put((2, "some lower priority data"))