2016-07-13 4 views
1

私はPriorityQueue.get()がPythonでどのような順序で値を返すかを調べようとしています。最初に私は小さい優先順位の値が最初に返されると考えましたが、いくつかの例の後ではそれはそうではありません。これは私が実行した例です:Python PriorityQueue order

>>> 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' 

この順番で値が返されるのはなぜですか?

答えて

1

docによると、最初のパラメータは優先順位であり、2番目の値は値です。だからあなたはそのような結果を得るのです。

エントリの典型的なパターンは、(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') 

お知らせ追加括弧を。

+0

私が(priority_number、data)を実行すると、.get()がpriority_numberを返し、データを返すようにします。 – user897234

+0

私は答えを更新しました。 – valignatev