在python中查找优先级队列中的值

时间:2014-05-19 04:23:27

标签: python data-structures queue priority-queue

有没有一种很好的方法可以在不破坏优先级队列的情况下从类queue.PriorityQueue()中删除值?我想理论上我可以创建一个get所有值的循环,直到我到达我需要的值,然后将所有其他值插回一个而不包括已删除的节点。这看起来有点矫枉过正。还有更好的方法吗?

编辑:我正在尝试建立节点的优先级队列,其中密钥是到达所述节点的成本。如果我找到更便宜的方式进入节点,我想以更便宜的成本将其替换为优先级队列。

2 个答案:

答案 0 :(得分:2)

queue模块及其类是主要用于同步(多线程/多处理)的工具,而不是纯数据结构。

也许您会找到符合您需求的this question的任何答案,或直接使用heapq

答案 1 :(得分:0)

不,没有一种好方法可以删除优先级队列中的任意值。您只能从优先级队列中提取top(min / max)元素。

设置数据结构(平衡二叉搜索树)会更好,因为你可以在O(log n)中找到并删除节点。