Python教程通過(guò)公共鍵對(duì)不同字典進(jìn)行排序示例詳解
利用 operator 模塊中的 itemgetter 函數(shù)對(duì)這類結(jié)構(gòu)進(jìn)行排序。
rows = [ {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {'fname': 'Big', 'lname': 'Jones', 'uid': 1004} ]
根據(jù)所有字典中共有的字段進(jìn)行排序,字段可以是字典的鍵名稱、用數(shù)字表示的列表元素或是任何可以傳給對(duì)象的 __getitem__() 方法的值。
如果傳多個(gè)標(biāo)記給 itemgetter(),那么它產(chǎn)生的可調(diào)用對(duì)象將返回以個(gè)包含所有元素在內(nèi)的元組,然后 sorted() 將根據(jù)對(duì)元組的排序結(jié)果來(lái)排序輸出的結(jié)果。
from operator import itemgetter rows_by_fname = sorted(rows, key=itemgetter('fname')) rows_by_uid = sorted(rows, key=itemgetter('uid')) print(rows_by_fname) # [{'fname': 'Big', 'uid': 1004, 'lname': 'Jones'}, # {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'}, # {'fname': 'David', 'uid': 1002, 'lname': 'Beazley'}, # {'fname': 'John', 'uid': 1001, 'lname': 'Cleese'}] print(rows_by_uid) # [{'fname': 'John', 'uid': 1001, 'lname': 'Cleese'}, # {'fname': 'David', 'uid': 1002, 'lname': 'Beazley'}, # {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'}, # {'fname': 'Big', 'uid': 1004, 'lname': 'Jones'}]
當(dāng) itemgetter() 函數(shù)接受多個(gè)鍵時(shí)
rows_by_lfname = sorted(rows, key=itemgetter('lname', 'fname')) print(rows_by_lfname) # [{'fname': 'David', 'uid': 1002, 'lname': 'Beazley'}, # {'fname': 'John', 'uid': 1001, 'lname': 'Cleese'}, # {'fname': 'Big', 'uid': 1004, 'lname': 'Jones'}, # {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'}]
同樣 itemgetter() 也適用于 min() 和 max() 函數(shù)
>>> min(rows, key=itemgetter('uid')) {'fname': 'John', 'lname': 'Cleese', 'uid': 1001} >>> max(rows, key=itemgetter('uid')) {'fname': 'Big', 'lname': 'Jones', 'uid': 1004}
以上就是Python教程通過(guò)公共鍵對(duì)不同字典進(jìn)行排序示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python公共鍵對(duì)字典進(jìn)行排序的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)封裝打包自己寫的代碼,被python import
這篇文章主要介紹了Python實(shí)現(xiàn)封裝打包自己寫的代碼,被python import,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07Python統(tǒng)計(jì)列表中的重復(fù)項(xiàng)出現(xiàn)的次數(shù)的方法
這篇文章主要介紹了Python統(tǒng)計(jì)列表中的重復(fù)項(xiàng)出現(xiàn)的次數(shù)的方法,需要的朋友可以參考下2014-08-08python網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼的方法
這篇文章主要介紹了python網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Python的Django框架可適配的各種數(shù)據(jù)庫(kù)介紹
這篇文章主要介紹了Python的Django框架可適配的各種數(shù)據(jù)庫(kù),簡(jiǎn)單總結(jié)為就是流行的幾種數(shù)據(jù)庫(kù)Python基本上全部能用XD 需要的朋友可以參考下2015-07-07利用python將?Matplotlib?可視化插入到?Excel表格中
這篇文章主要介紹了利用python將?Matplotlib?可視化?插入到?Excel?表格中,通過(guò)使用xlwings模塊來(lái)控制Excel插入圖表,具體詳細(xì)需要的朋友可以參考下面文章內(nèi)容2022-06-06Python使用OpenCV實(shí)現(xiàn)虛擬縮放效果
OpenCV?徹底改變了整個(gè)圖像處理領(lǐng)域。從圖像分類到對(duì)象檢測(cè),我們不僅可以使用?OpenCV?庫(kù)做一些很酷的事情,而且還可以構(gòu)建一流的應(yīng)用程序。本文將用OpenCV實(shí)現(xiàn)虛擬縮放,需要的可以參考一下2022-02-02Python高級(jí)編程之消息隊(duì)列(Queue)與進(jìn)程池(Pool)實(shí)例詳解
這篇文章主要介紹了Python高級(jí)編程之消息隊(duì)列(Queue)與進(jìn)程池(Pool),結(jié)合實(shí)例形式詳細(xì)分析了Python消息隊(duì)列與進(jìn)程池的相關(guān)原理、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-11-11