亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

維護兩個相同類型對象的優先級隊列,每個隊列具有不同的排序屬性

維護兩個相同類型對象的優先級隊列,每個隊列具有不同的排序屬性

森林海 2022-08-25 15:04:54
所以,我有一個類。我想要兩個優先級隊列的數據類型,以及一個類型對象的優先級隊列。但是,我想在 上訂購其中一個,并在 上訂購另一個?,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]


查看完整回答
反對 回復 2022-08-25
  • 1 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號