Python教程通過公共鍵對不同字典進行排序示例詳解
利用 operator 模塊中的 itemgetter 函數(shù)對這類結(jié)構(gòu)進行排序。
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ù)所有字典中共有的字段進行排序,字段可以是字典的鍵名稱、用數(shù)字表示的列表元素或是任何可以傳給對象的 __getitem__() 方法的值。
如果傳多個標記給 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'}]
當 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教程通過公共鍵對不同字典進行排序示例詳解的詳細內(nèi)容,更多關(guān)于Python公共鍵對字典進行排序的資料請關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。