首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印出PriorityQueue中的值

打印出PriorityQueue中的值
EN

Stack Overflow用户
提问于 2012-02-18 10:21:24
回答 1查看 5.5K关注 0票数 0

如果我想在PriorityQueue中打印值,我怎么做呢?我扩展了PriortiyQueue,并访问了底层列表queue。但是,当我执行for循环时,我得到了添加项的顺序。

代码语言:javascript
复制
# the ADT PriorityQueue
class ReadyQueue(PriorityQueue):
    ...

    def listAll(self):
        print("PID \t Name \t Status \t Priority")
        print("=" * 42)
        for _, _, pcb in self.queue:
            print(pcb)

# ADT 
class PCB:
    ...
    def __lt__(self, other):
        selfPriority = (self.priority, self.creationTime)
        otherPriority = (other.priority, other.creationTime)
        return selfPriority < otherPriority

# in the main function
q = ReadyQueue()
q.enqueue(PCB("p1", 0, None, q))
q.enqueue(PCB("p8", 6, None, q))
q.enqueue(PCB("p2", 1, None, q))
q.enqueue(PCB("p0", 1, None, q))
q.enqueue(PCB("p6", 1, None, q))
q.enqueue(PCB("p4", 1, None, q))
q.enqueue(PCB("p3", 2, None, q))

q.listAll()

产出:

代码语言:javascript
复制
 PID     Name    Status      Priority
 ==========================================
 0   p1      ready_s     0
 3   p0      ready_s     1
 2   p2      ready_s     1
 1   p8      ready_s     6
 4   p6      ready_s     1
 5   p4      ready_s     1
 6   p3      ready_s     2

注意优先权是不对的。虽然它们也没有按造物顺序出现.我错过了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-18 10:32:45

PriorityQueue使用heapq推送和弹出元素,http://docs.python.org/library/heapq.html

因此,队列是堆,而不是排序列表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9340352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档