python的优先队列如何对自定义的类进行比较

对于自定义的类使用优先队列,在入队的时候需要根据类的某一属性进行比较。

方法:使用重载方法__lt__,__lt__是python中用于进行特定比较的方法。

例如:

import queue
class person(object):
    def __init__(self,name,score):
        self.name = name
        self.score = score
    def __lt__(self, other):
        return self.score > other.score


p1 = person("张三",15)
p2 = person("李四",23)
p3 = person("王五",12)
p4 = person("朱五",32)
que = queue.PriorityQueue()
que.put(p1)
que.put(p2)
que.put(p4)
que.put(p3)

print(que.get().name)
print(que.get().name)
print(que.get().name)
print(que.get().name)

其中,__lt__定义了根据score属性进行从大到小的排列。即当PriorityQueue入队一个类实例的时候,会自动根据score属性进行比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值