所以,我有一個類。我想要兩個優先級隊列的數據類型,以及一個類型對象的優先級隊列。但是,我想在 上訂購其中一個,并在 上訂購另一個?,F在,不支持關鍵功能,所以我采取了以下措施:PPPP.xP.yqueue.PriorityQueue.put()class P: ... def __lt__(self, other): return self.y < other.y ...但是,這不允許基于進行排序,同時,我想偷看其中一個隊列而不是另一個隊列,并且沒有函數。因此,我用排序列表替換了其中一個優先級隊列。我無法使用該庫,因為這是用于家庭作業的,我不能保證評分服務器已安裝它,因此我轉向使用.P.xqueue.PriorityQueuepeekSortedContainersbisect.insort然而,唯一的問題是它也不支持關鍵功能。因此,我必須編寫自己的函數來完成此任務,然后用 .這感覺就像一個黑客,因為我正在編寫自己的二進制插入函數,而二進制插入是一個核心的計算機科學概念,這之前一定已經出現過。bisect.insortbinary_insert(lst, item, key)binary_insert(lst, item, key = lambda i: i.x)一種方法是使用形式的列表存儲元組,并具有表單的優先級隊列存儲元組。但是,有沒有其他方法可以將這些屬性內化到自身中?否則,每次彈出項目時,我都必須解壓縮元組,這可能會導致我的程序充斥著未使用的變量。(x, p)(y, p)P
1 回答

慕的地8271018
TA貢獻1796條經驗 獲得超4個贊
也許你可以子類來為你做元組,像這樣的東西(完全未經測試的代碼):PriorityQueue
class MyPriorityQueue(PriorityQueue):
def _put(self, item):
super()._put((item.x, item))
def _get(self):
return super()._get()[1]
添加回答
舉報
0/150
提交
取消