如何在Python中将项目置于队列顶部?

6

是否可以将项目放在队列顶部而不是底部?在某些情况下,我需要重新填充队列,并在获取项目后保持原始顺序。


使用双端队列怎么样?from collections import Deque - Reblochon Masque
4个回答

6

根据定义,将内容放入队列中是放到末尾。

你应该使用deque代替。


2
实际上,按照队列的定义,放置和获取操作发生在不同的端点。 - user2390182
@schwobaseggl,当然 :) 谢谢,我修正了答案。 - DeepSpace

3

DeepSpace 的建议之后,这里提供一个简单的实现方法,可以使用appendleft()将一个元素放在Python队列的顶部。

from collections import deque

Q=deque([2,1,5,7,4,3])
Q.appendleft(8)
print('{}{}'.format("head: ", Q[0]))

输出:

deque([8, 2, 1, 5, 7, 4, 3])
head: 8

如果你不想使用appendleft(),可以使用列表属性进行操作,如下所示:
deque([8]+list(Q))

输出:

deque([8, 2, 1, 5, 7, 4, 3])

1
唯一的问题是dequeue不会等待新消息到达.pop()。推送

0
这对我有用:
from queue import Queue
q = Queue()
element = 1
q.put(2)
q.put(3)
q.queue.insert(0, element) # Insert element in index 0 (begin).
while not q.empty():
     print(q.get())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接