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

python中PriorityQueue的使用及說明

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

PriorityQueue是優(yōu)先級(jí)隊(duì)列

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

下面的代碼運(yùn)行正常。

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

下面的代碼運(yùn)行報(bào)錯(cuò)。

# 示例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)先級(jí)隊(duì)列,優(yōu)先級(jí)排序使用了堆排序,這一操作會(huì)對(duì)壓入的元素進(jìn)行比較。

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

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

會(huì)報(bào)錯(cuò)

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

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

# 示例3
tsq = queue.PriorityQueue()
tsq.put_nowait((0,{'task_name': 'aaa'}))  # tuple包含兩個(gè)元素,第一個(gè)是優(yōu)先級(jí),第二個(gè)是數(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)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Python的循環(huán)結(jié)構(gòu)知識(shí)點(diǎn)

    詳解Python的循環(huán)結(jié)構(gòu)知識(shí)點(diǎn)

    在本篇文章里小編給大家分享了關(guān)于Python循環(huán)結(jié)構(gòu)的相關(guān)知識(shí)點(diǎn)總結(jié)內(nèi)容,需要的朋友們跟著學(xué)習(xí)下吧。
    2019-05-05
  • Python?asyncio的一個(gè)坑

    Python?asyncio的一個(gè)坑

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

    Python 中導(dǎo)入文本文件的示例代碼

    這篇文章主要介紹了如何在 Python 中導(dǎo)入文本文件,在Python中導(dǎo)入文本文件是很常見的操作,我們可以使用內(nèi)置的open函數(shù)和with語(yǔ)句來讀取或?qū)懭胛谋疚募枰呐笥芽梢詤⒖枷?/div> 2023-05-05
  • Python字符串通過''+''和join函數(shù)拼接新字符串的性能測(cè)試比較

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

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

    使用python-docx和win32com庫(kù)實(shí)現(xiàn)批量轉(zhuǎn)換doc文件為docx文件

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

    在python中實(shí)現(xiàn)導(dǎo)入一個(gè)需要傳參的模塊

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

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

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

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

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

    Python利用wxPython制作一個(gè)有趣的驗(yàn)證碼生成器

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

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

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

最新評(píng)論

噶尔县| 金阳县| 资中县| 克什克腾旗| 翁源县| 嵊州市| 越西县| 确山县| 正蓝旗| 江山市| 烟台市| 尼木县| 平定县| 普陀区| 盐津县| 黄浦区| 吉首市| 石楼县| 监利县| 哈巴河县| 霍州市| 河池市| 普宁市| 孟村| 正蓝旗| 兴国县| 临洮县| 民乐县| 铜鼓县| 甘谷县| 宜兰县| 南岸区| 屏边| 金溪县| 津市市| 新疆| 巴林右旗| 鲁山县| 台州市| 余江县| 安仁县|