Python教程通過公共鍵對(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é)果來排序輸出的結(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教程通過公共鍵對(duì)不同字典進(jìn)行排序示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python公共鍵對(duì)字典進(jìn)行排序的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python Opencv實(shí)戰(zhàn)之文字檢測(cè)OCR
這篇文章主要為大家詳細(xì)介紹了如何利用Python Opencv實(shí)現(xiàn)文字檢測(cè)OCR功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-08-08
GitHub上值得推薦的8個(gè)python 項(xiàng)目
GitHub 無疑是代碼托管領(lǐng)域的先行者,Python 作為一種通用編程語言,已經(jīng)被千千萬萬的開發(fā)人員用來構(gòu)建各種有意思或有用的項(xiàng)目。以下我們會(huì)介紹一些使用 Python 構(gòu)建的GitHub上優(yōu)秀的項(xiàng)目。2020-10-10
Python中移除List重復(fù)項(xiàng)的五種方法
本文列些處幾種去除在Python 列表中(list)可能存在的重復(fù)項(xiàng),這在很多應(yīng)用程序中都會(huì)遇到的需求,本文介紹幾種方法,感興趣的可以了解一下2021-05-05
Python+Selenium實(shí)現(xiàn)網(wǎng)站滑塊拖動(dòng)操作
這篇文章主要為大家詳細(xì)介紹了如何利用Python+Selenium模擬實(shí)現(xiàn)登錄某網(wǎng)站的滑塊拖動(dòng)操作,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-09-09
python線程安全及多進(jìn)程多線程實(shí)現(xiàn)方法詳解
這篇文章主要介紹了python線程安全及多進(jìn)程多線程實(shí)現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
用Python實(shí)現(xiàn)局域網(wǎng)控制電腦
大家好,本篇文章主要講的是用Python實(shí)現(xiàn)局域網(wǎng)控制電腦,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
Python中的XML庫(kù)4Suite Server的介紹
這篇文章主要介紹了Python中的XML庫(kù)4Suite Server,來自于IBM官方網(wǎng)站,需要的朋友可以參考下2015-04-04

