最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中PriorityQueue的使用及說明

 更新時間:2026年01月21日 16:07:22   作者:babybin  
PriorityQueue是一種優(yōu)先級隊列,越小的優(yōu)先級越高,當隊列中包含不可比較的元素時,會引發(fā)TypeError,正確的使用方式是使用tuple的第一個元素作為優(yōu)先級數(shù)字,或者重定義類的__lt__方法

PriorityQueue是優(yōu)先級隊列

越小的優(yōu)先級越高,會被先取出。

下面的代碼運行正常。

# 示例1
tsq = queue.PriorityQueue()    
tsq.put_nowait((0, '123', ['abc', 'efg'], 0))
tsq.put_nowait((0, '456', ['abc'], 0))

下面的代碼運行報錯。

# 示例2
tsq = queue.PriorityQueue()
tsq.put_nowait((0, '123', {"name":'abc', "age":'efg'}, 0))
tsq.put_nowait((0, '123', {"name":'abc'}, 0))

原因

PriorityQueue是優(yōu)先級隊列,優(yōu)先級排序使用了堆排序,這一操作會對壓入的元素進行比較。

示例2中壓入的元素是tuple,兩個tuple相比較是將tuple中元素逐個比較。

示例2中壓入的兩個tuple的前兩個元素都相同,第三個元素{"name":'abc', "age":'efg'}{"name":'abc'}都是字典,字典是不能比較大小的。

會報錯

TypeError: '<' not supported between instances of 'dict' and 'dict'

PriorityQueue的正確使用方式,應該是如下兩種,使用tuple的第一個元素作為優(yōu)先級數(shù)字,或者自定義類中重定義__lt__方法,使得類實例能夠相互比較。

# 示例3
tsq = queue.PriorityQueue()
tsq.put_nowait((0,{'task_name': 'aaa'}))  # tuple包含兩個元素,第一個是優(yōu)先級,第二個是數(shù)據(jù)
tsq.put_nowait((1, {'task_name', 'bbbb'})) 
# 示例4
import queue


class Task(object):
    def __init__(self, priority, name):
        self.priority = priority
        self.name = name

    def __str__(self):
        return "Task(priority={p}, name={n})".format(p=self.priority, n=self.name)

    def __lt__(self, other):
    	""" 定義<比較操作符。 """
        return self.priority < other.priority


tsq = queue.PriorityQueue()
tsq.put_nowait(Task(3, "task1"))  # 自定義的類定義了__lt__, 可以比較大小
tsq.put_nowait(Task(1, "task2"))
print(tsq.get())  # return: Task(priory=1, name=task2)

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 詳解Python的循環(huán)結構知識點

    詳解Python的循環(huán)結構知識點

    在本篇文章里小編給大家分享了關于Python循環(huán)結構的相關知識點總結內容,需要的朋友們跟著學習下吧。
    2019-05-05
  • Python?asyncio的一個坑

    Python?asyncio的一個坑

    這篇文章主要介紹了Python?asyncio的一個坑,文章從Python編程錯誤開始介紹,改變與好多變不成中常犯的錯誤,我們今天就來分析分析吧,需要的下伙伴也可以參考一下
    2021-12-12
  • Python 中導入文本文件的示例代碼

    Python 中導入文本文件的示例代碼

    這篇文章主要介紹了如何在 Python 中導入文本文件,在Python中導入文本文件是很常見的操作,我們可以使用內置的open函數(shù)和with語句來讀取或寫入文本文件,需要的朋友可以參考下
    2023-05-05
  • Python字符串通過''+''和join函數(shù)拼接新字符串的性能測試比較

    Python字符串通過''+''和join函數(shù)拼接新字符串的性能測試比較

    今天小編就為大家分享一篇關于Python字符串通過'+'和join函數(shù)拼接新字符串的性能測試比較,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 使用python-docx和win32com庫實現(xiàn)批量轉換doc文件為docx文件

    使用python-docx和win32com庫實現(xiàn)批量轉換doc文件為docx文件

    這篇文章主要為大家詳細介紹了使用python-docx和win32com庫實現(xiàn)批量轉換doc文件為docx文件的相關方法,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2025-12-12
  • 在python中實現(xiàn)導入一個需要傳參的模塊

    在python中實現(xiàn)導入一個需要傳參的模塊

    這篇文章主要介紹了在python中實現(xiàn)導入一個需要傳參的模塊,具有很好的參考價值,希望可以給大家一個參考,以后在遇到這種的情況的時候,知道如何應對
    2021-05-05
  • 在Django中限制已登錄用戶的訪問的方法

    在Django中限制已登錄用戶的訪問的方法

    這篇文章主要介紹了在Django中限制已登錄用戶的訪問的方法,Django是最具人氣的Python開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • python反編譯學習之字節(jié)碼詳解

    python反編譯學習之字節(jié)碼詳解

    這篇文章主要給大家介紹了關于python反編譯學習之字節(jié)碼的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • Python利用wxPython制作一個有趣的驗證碼生成器

    Python利用wxPython制作一個有趣的驗證碼生成器

    這篇文章主要為大家詳細介紹了Python如何利用wxPython制作一個簡單有趣的驗證碼生成器,文中的示例代碼講解詳細,需要的小伙伴可以了解一下
    2023-04-04
  • Python OpenCV實現(xiàn)視頻追蹤

    Python OpenCV實現(xiàn)視頻追蹤

    這篇文章主要為大家詳細介紹了Python OpenCV實現(xiàn)視頻追蹤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

当阳市| 偏关县| 聂荣县| 常州市| 襄樊市| 平陆县| 南澳县| 霸州市| 广安市| 邹城市| 景宁| 台山市| 安泽县| 阳谷县| 罗平县| 卓资县| 依安县| 准格尔旗| 措勤县| 兖州市| 丰顺县| 德清县| 枝江市| 广东省| 沅江市| 罗源县| 清镇市| 会昌县| 阳泉市| 民丰县| 兴仁县| 江门市| 五台县| 通江县| 涿州市| 长寿区| 江山市| 乌拉特前旗| 大英县| 颍上县| 化州市|