国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python cookbook(數據結構與算法)通過公共鍵對字典列表排序算法示例

2020-01-04 15:37:48
字體:
來源:轉載
供稿:網友

本文實例講述了Python通過公共鍵對字典列表排序算法。分享給大家供大家參考,具體如下:

問題:想根據一個或多個字典中的值來對列表排序

解決方案:利用operator模塊中的itemgetter()函數對這類結構進行排序是非常簡單的。

# Sort a list of a dicts on a common keyrows = [  {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003},  {'fname': 'David', 'lname': 'Beazley', 'uid': 1002},  {'fname': 'John', 'lname': 'Cleese', 'uid': 1001},  {'fname': 'Big', 'lname': 'Jones', 'uid': 1004}]from operator import itemgetterrows_by_fname = sorted(rows, key=itemgetter('fname'))rows_by_uid = sorted(rows, key=itemgetter('uid'))from pprint import pprintprint("Sorted by fname:")pprint(rows_by_fname) #pprint模塊的pprint()提供了打印出任何python數據結構類和方法。print("Sorted by uid:")pprint(rows_by_uid)rows_by_lfname = sorted(rows, key=itemgetter('lname','fname'))print("Sorted by lname,fname:")pprint(rows_by_lfname)
>>> ================================ RESTART ================================>>>Sorted by fname:[{'fname': 'Big', 'lname': 'Jones', 'uid': 1004}, {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'John', 'lname': 'Cleese', 'uid': 1001}]Sorted by uid:[{'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'Big', 'lname': 'Jones', 'uid': 1004}]Sorted by lname,fname:[{'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {'fname': 'Big', 'lname': 'Jones', 'uid': 1004}, {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}]>>>

補充說明:

有時候會利用lambda表達式來取代itemgetter()的功能:但是利用itemgetter()會運行的更快一些,所以考慮性能的話,應該使用itemgetter()

rows_by_fname = sorted(rows, key=lambda r:r['fname'])rows_by_uid = sorted(rows, key=lambda r:r['uid'])

最后,本節展示的技術同樣適用于min()max()這樣的函數:

>>> min(rows, key=itemgetter('uid')){'lname': 'Cleese', 'fname': 'John', 'uid': 1001}>>> max(rows, key=itemgetter('uid')){'lname': 'Jones', 'fname': 'Big', 'uid': 1004}>>> itemgetter('uid')<operator.itemgetter object at 0x023532F0>>>>

希望本文所述對大家Python程序設計有所幫助。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 垣曲县| 玛纳斯县| 凉城县| 晋宁县| 滦平县| 新乐市| 五华县| 兰溪市| 安仁县| 贵定县| 安多县| 贡觉县| 屏山县| 青海省| 荔浦县| 竹溪县| 如东县| 东乡族自治县| 北票市| 兴海县| 鹿邑县| 霍州市| 上思县| 南投县| 高碑店市| 兴安盟| 富蕴县| 红桥区| 垫江县| 寿宁县| 缙云县| 余江县| 龙南县| 泗阳县| 庄河市| 无锡市| 栾川县| 思茅市| 曲周县| 敦化市| 贺州市|