对于自定义的类使用优先队列,在入队的时候需要根据类的某一属性进行比较。
方法:使用重载方法__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属性进行比较。