Jie*_*eng 25 python queue python-3.x
我想得到队列中的下一个项目,但我不想让它出列.是否可以在Python的优先级队列中使用?从文档中,我看不出它是如何完成的
HYR*_*YRY 30
如果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
print a.get()
print a.queue
print a.get()
print a.queue
Run Code Online (Sandbox Code Playgroud)
输出是:
[(3, 'c'), (10, 'a'), (4, 'b')]
(3, 'c')
[(4, 'b'), (10, 'a')]
(4, 'b')
[(10, 'a')]
Run Code Online (Sandbox Code Playgroud)
但要注意多线程访问.
如果要在PriorityQueue中下一个元素,请按照元素插入的顺序使用:
for i in range(len(queue)):
print queue.queue[i]
Run Code Online (Sandbox Code Playgroud)
这不会弹出任何东西。
如果要按优先级顺序使用,请使用:
for i in range(len(queue)):
temp = queue.get()
queue.put(temp)
print temp
Run Code Online (Sandbox Code Playgroud)
如果您使用的是元组,而不是单个变量,则将temp替换为:
((temp1,temp2))
Run Code Online (Sandbox Code Playgroud)
当您根据理论从队列中获取项目时,它将从队列中删除。您必须编写自己的函数,该函数将为您提供 PriorityQueue 的最后一个元素。您可以通过继承priorityqueue来创建peek函数。