次のアイテムをキューに入れたいのですが、デキューしたくありません。Pythonで可能queue.PriorityQueue
ですか?ドキュメントから、私はそれがどのように行われることができるかわかりません
70070 次
6 に答える
59
aがPriorityQueueオブジェクトの場合、a.queue[0]
次のアイテムを取得するために使用できます。
from queue import PriorityQueue
a = PriorityQueue()
a.put((10, "a"))
a.put((4, "b"))
a.put((3,"c"))
print(a.queue[0])
print(a.queue)
print(a.get())
print(a.queue)
print(a.get())
print(a.queue)
出力は:
(3, 'c')
[(3, 'c'), (10, 'a'), (4, 'b')]
(3, 'c')
[(4, 'b'), (10, 'a')]
(4, 'b')
[(10, 'a')]
ただし、マルチスレッドアクセスには注意してください。
于 2012-02-15T05:08:08.897 に答える
6
PriorityQueueの次の要素が必要な場合は、要素の挿入順に次を使用します。
for i in range(len(queue.queue)):
print queue.queue[i]
これは何も飛び出しません。
優先順位を付ける場合は、次を使用します。
for i in range(len(queue.queue)):
temp = queue.get()
queue.put(temp)
print temp
単一の変数ではなくタプルを使用している場合は、tempを次のように置き換えます。
((temp1,temp2))
于 2015-06-11T05:40:46.037 に答える
4
PriorityQueueに保存されているアイテムがタプル(優先度、値)であると仮定すると、
def peek(pq):
return pq.queue[0][1]
于 2017-05-14T04:43:17.360 に答える
3
キューの最初の要素のインデックス付けが機能するはずです。heapq
ライブラリを使用している場合、ドキュメントには次のように記載されています。
ヒープの興味深い特性は、その最小要素が常にルートであるということ
heap[0]
です。
于 2012-02-15T04:53:43.190 に答える
2
理論に従ってアイテムをキューから取得すると、キューから削除されます。PriorityQueueの最後の要素を提供する独自の関数を作成する必要があります。優先度付きキューを継承することで、ピーク関数を作成できます。
于 2012-02-15T04:56:58.827 に答える
0
がPeriorityQueueの場合q
、次を使用できます。
for i in range(q.qsize()):
print(q.queue[i])
于 2021-09-18T11:04:25.833 に答える