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

首頁 > 編程 > Python > 正文

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

2020-02-22 23:29:14
字體:
來源:轉載
供稿:網友

本文實例講述了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 Cookbook》)

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 门源| 朝阳区| 漳州市| 赤水市| 马尔康县| 蓬安县| 从江县| 庆安县| 邹平县| 迭部县| 兴城市| 永泰县| 靖安县| 金门县| 太保市| 呼图壁县| 包头市| 天长市| 闸北区| 青海省| 宕昌县| 灵宝市| 昔阳县| 全州县| 石楼县| 扬中市| 祥云县| 碌曲县| 北辰区| 大安市| 土默特左旗| 防城港市| 洪雅县| 顺义区| 凤台县| 浮梁县| 开远市| 灌云县| 马山县| 兴和县| 乐清市|