You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python优先级队列排序失效问题:如何修复enqueue方法?

优先级队列排序问题修复方案

你的代码本身的排序逻辑是对的,但问题出在测试方式上:你创建了两个完全独立的PriorityQueue实例(x和y),每个实例只插入了一个元素——单个元素的列表排序后当然还是它自己,自然看不到排序效果。

修复方法很简单:使用同一个队列实例多次调用enqueue方法,插入不同优先级的元素,就能看到排序后的结果了。

修复后的测试代码:

class PriorityQueue:
    def __init__(self):
        self.q = []

    def enqueue(self, priority, item):
        self.q.append([priority, item])
        self.q = sorted(self.q)
        return self.q


# 使用同一个实例进行多次入队操作
pq = PriorityQueue()
print(pq.enqueue(3, "Potato"))  # 输出: [[3, 'Potato']]
print(pq.enqueue(1, "Egg"))     # 输出: [[1, 'Egg'], [3, 'Potato']]
print(pq.enqueue(2, "Carrot"))  # 输出: [[1, 'Egg'], [2, 'Carrot'], [3, 'Potato']]

补充说明:

  • Python的sorted函数对列表排序时,会默认按列表元素的顺序依次比较。对于[priority, item]这样的子列表,会先比较priority值(数字升序),如果优先级相同,再比较item的字符串顺序,完全符合优先级队列的基本需求。
  • 如果需要降序排序,可以修改sorted的参数:self.q = sorted(self.q, reverse=True)

内容的提问来源于stack exchange,提问作者iaivazovski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:35:31