python的優先佇列如何對自定義的類進行比較

2021-10-06 13:40:56 字數 740 閱讀 5798

對於自定義的類使用優先佇列,在入隊的時候需要根據類的某一屬性進行比較。

方法:使用過載方法__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屬性進行比較。

python優先佇列

q queue.priorityqueue q.put 呼叫的是heapq.heap item 而headpush 方法則是呼叫每個item的比較大小方法,預設是小的在頂端,所以是小頂堆。所以能用元組自定義插入順序,比如 2,item1 3,item2 所以q.put 2.item1 q.put 3...

python優先佇列

最近刷題的時候遇到了優先佇列。與一般的佇列 先進先出fifo 不同的是,優先佇列一般是最高端的優先出 即最大的先出 一開始想到的,可以用堆來維護乙個優先佇列。不過,python中的堆是乙個小根堆,即每次頂部pop出的都是最小值。這樣一來,我想到了41.資料流中的中位數,能不能把數字變負,寫入小根堆。...

python優先順序佇列 python 優先順序佇列

簡介 優先順序佇列是基於堆的,關於堆的時候可以參考文章堆,優先順序佇列就是入隊時,會分配乙個優先順序,之後出隊時,根據優先順序出列。如,入隊時 4,a 6,r 3 d 則出隊順序 6,r 4,a 3 d 優先順序佇列的python實現 class priorityqueue object def i...