Python 优先队列顺序

Python PriorityQueue order

我试图找出 PriorityQueue.get() returns 值在 Python 中的顺序。首先,我认为首先返回较小的优先级值,但在几个例子之后它不是那样的。这是我的示例 运行:

>>> qe = PriorityQueue()
>>> qe.put("Br", 0)
>>> qe.put("Sh", 0.54743812441605)
>>> qe.put("Gl", 1.1008112004388)

>>> qe.get()
'Br'
>>> qe.get()
'Gl'
>>> qe.get()
'Sh'

为什么返回值会按这个顺序?

根据doc,第一个参数是优先级,第二个-是值。这就是为什么你会得到这样的结果。

A typical pattern for entries is a tuple in the form: (priority_number, data).

所以你应该像这样传递一个元组:

>>> q = PriorityQueue()
>>> q.put((10,'ten'))
>>> q.put((1,'one'))
>>> q.put((5,'five'))
>>> q.get()
>>> (1, 'one')
>>> q.get()
>>> (5, 'five')
>>> q.get()
>>> (10, 'ten')

注意额外的大括号。