Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“优先级堆栈”;(优先级队列和堆栈的混合)在Python 3中?_Python_Python 3.x_Stack_Priority Queue - Fatal编程技术网

&引用;“优先级堆栈”;(优先级队列和堆栈的混合)在Python 3中?

&引用;“优先级堆栈”;(优先级队列和堆栈的混合)在Python 3中?,python,python-3.x,stack,priority-queue,Python,Python 3.x,Stack,Priority Queue,我需要Python3中的“优先级堆栈”数据结构(像优先级队列,但更像是堆栈) 我知道queue.PriorityQueue,但没有找到类似queue.PriorityStack的东西。最简单的方法是创建一个对象,其中包含要插入的实际数据,以及一个序列号,该序列号在每次插入时递增。所以有一个对象看起来像这样: queueObject actual_data sequence_number priority 当您想在优先级队列中插入某些内容时,可以使用新的序列号创建此对象。

我需要Python3中的“优先级堆栈”数据结构(像优先级队列,但更像是堆栈)


我知道
queue.PriorityQueue
,但没有找到类似
queue.PriorityStack

的东西。最简单的方法是创建一个对象,其中包含要插入的实际数据,以及一个序列号,该序列号在每次插入时递增。所以有一个对象看起来像这样:

queueObject
    actual_data
    sequence_number
    priority
当您想在优先级队列中插入某些内容时,可以使用新的序列号创建此对象。比如:

function insert(data, priority)
    obj = new queuedObject(data, priority, ++globalSequence)
    pq.insert(obj)
有了它和一个定制的比较器,您可以只使用标准的Python heapq对象。只需确保比较器比较优先级和序列号


如果愿意,可以使用时间戳代替序列号。无论哪种方式,假设您的比较器是正确的,这将确保具有相同优先级的项目按后进先出顺序退出队列。

优先级堆栈到底会做什么?你试过写一个吗?@PatrickHaugh我想,它应该像堆栈一样,但优先级较高的条目“浮动”在优先级较低的条目之上。如果“优先级”决定了项目弹出的顺序,那么它与优先级队列有何不同?@neerad29相同优先级的条目应该是后进先出,而不是先进先出。这就是差异的本质,请澄清。您可以将其实现为堆栈的优先级队列。也就是说,优先级队列中的每个元素都是具有相同优先级的项目堆栈。