切换priorityQueue中的元素

时间:2017-09-14 16:11:38

标签: python queue tuples priority-queue

我有这段代码:

q = PriorityQueue()
a = ((1, 1), 10, 0)
q.put(a)
newTuple = ((1,1), 8, 0)
res = any(newTuple[0] in item for item in q.queue) #res = true

目前,我正在检查priorityQueue中的任何元组中是否存在newTuple [0](即(1,1))。 我想改变代码,以便检查newTuple [0]是否在队列中,如果它确实是(并因此与某些元组'a'相关联),则用队列中的这个元组'a'替换newTuple如果newTuple [1](即8)小于a [1](即10)。

这可能吗?

1 个答案:

答案 0 :(得分:1)

如果您想更灵活地访问和修改队列的值,也许您也可以尝试使用heapq而不是PriorityQueue

import heapq

heap = [((1, 1), 10, 0)]
heapq.heapify(heap)
for x in heap:
    print x,

您可以搜索堆,因为它是一个列表,并直接替换它。这是一个很好的选择。