如果多个元素具有相同的优先级,Python中是否有“ Lifo”类型的优先级队列?

格雷格

我在python的优先级队列中有两个具有相同等级的元组。get方法将采用插入的第一个元素。如果两个元素在队列中具有相同的优先级,我想获取插入的最后一个元素,该元素首先返回:

#python 3.7
import queue
q= queue.PriorityQueue()
q.put((1, 'first_in'))
q.put((1, 'last_in'))
q.put((2, 'not_to_be_returned'))

for i in range(q.qsize()):
    print(q.get(i))

#Returns
(1, 'first_in')
(1, 'last_in')
(2, 'not_to_be_returned')

#looking for : 
(1, 'last_in') # in case of same rank return the last inserted
(1, 'first_in') 
(2, 'not_to_be_returned')

#Merci
马特·蒂默曼斯

如果您确实需要这种排序,最简单的解决方法是在元组中添加一个新的2nd元素,当两个元组中的1st元素相同时,该元素将用于打破联系。

对于LIFO订购,您使用每次插入时都会递减的计数器。您的元素将变为:

q.put((1, 0, 'first_in'))
q.put((1, -1, 'last_in'))
q.put((2, -2, 'not_to_be_returned'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有两个优先级Python的优先级队列

来自分类Dev

具有两个优先级Python的优先级队列

来自分类Dev

对具有较高优先级的一系列元素和具有较低优先级的其他元素的优先级队列进行排序

来自分类Dev

Python:以时间为优先级的优先级队列

来自分类Dev

增加优先级队列中的优先级

来自分类Dev

python中的优先级队列

来自分类Dev

具有两个优先级值的优先级队列

来自分类Dev

具有减少键操作的Javascript优先级队列

来自分类Dev

具有自定义顺序的优先级队列

来自分类Dev

创建具有相反顺序的优先级队列

来自分类Dev

TestNG中具有多个类的优先级

来自分类Dev

Redis中的并发优先级队列?

来自分类Dev

在C ++中实现优先级队列

来自分类Dev

在C ++中实现优先级队列

来自分类Dev

有没有一种方法可以检查Python中的优先级队列中是否存在优先级?

来自分类Dev

类型类优先级

来自分类Dev

C ++实现具有不同优先级功能的优先级队列的最佳方法是什么?

来自分类Dev

如何用O(logN)排序具有n个元素的优先级队列?

来自分类Dev

Java中的优先级队列-检索特定元素

来自分类Dev

具有优先级队列的Dijkstra算法是否找不到目的地?

来自分类Dev

具有优先级的RxJava Zip

来自分类Dev

处理具有相同优先级的中断

来自分类Dev

c ++有序(稳定)优先级队列

来自分类Dev

C ++优先级队列交换内容

来自分类Dev

优先级队列多线程

来自分类Dev

从阵列到优先级队列

来自分类Dev

Azure队列消息优先级

来自分类Dev

优先级队列和Prim算法

来自分类Dev

使用堆栈实现优先级队列