【问题标题】:Switch elements in priorityQueue在priorityQueue中切换元素
【发布时间】:2017-09-14 16:11:37
【问题描述】:

我有这个代码:

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[1](即 8)小于 a[1](即 10),则为 newTuple。

这可能吗?

【问题讨论】:

  • 如果你要对我投反对票,你能告诉我如何改进吗?
  • 据我所知PriorityQueue 是环绕heapq,当然你可以改变q.queue,但你需要重新堆放它。为什么不直接使用heapq

标签: python queue tuples priority-queue


【解决方案1】:

如果你想更灵活地访问和修改队列的值,也许你也可以尝试用 heapq 代替 PriorityQueue

import heapq

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

你可以搜索堆,因为它是一个列表,然后直接替换它。这是一个不错的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2018-02-23
    • 1970-01-01
    相关资源
    最近更新 更多