91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • Python cookbook(數據結構與算法)通過公共鍵對字典列表排序算法示例

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

發布時間:2020-08-24 03:28:50 來源:腳本之家 閱讀:152 作者:壟上行 欄目:開發技術

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

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

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

# Sort a list of a dicts on a common key
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}
]
from operator import itemgetter
rows_by_fname = sorted(rows, key=itemgetter('fname'))
rows_by_uid = sorted(rows, key=itemgetter('uid'))
from pprint import pprint
print("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程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

承德市| 大荔县| 安丘市| 香港| 博兴县| 思茅市| 富阳市| 蒙城县| 逊克县| 霍林郭勒市| 罗田县| 松原市| 滦南县| 古蔺县| 南京市| 察隅县| 广元市| 定襄县| 苍梧县| 博客| 玉山县| 小金县| 黑河市| 泰兴市| 绥滨县| 峡江县| 江阴市| 如皋市| 绥芬河市| 兴城市| 鄂尔多斯市| 金坛市| 岢岚县| 积石山| 萍乡市| 德化县| 张北县| 万盛区| 丹寨县| 万安县| 元阳县|