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

