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')
注意额外的大括号。
我试图找出 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')
注意额外的大括号。