python教程對函數(shù)中的參數(shù)進行排序
內建的 sorted() 函數(shù)可接受一個用來傳遞可調用對象( callable ) 的參數(shù) key,而該可調用對象會返回待排序對象中的某些值,sorted則利用這些值來比較對象。
例如,如果應用中有一系列的 User 對象實例,而我們想通過 user_id 屬性來對他們排序,則可以提供一個可調用對象將 User 實例作為輸入然后返回 user_id。
class User:
def __init__(self, user_id):
self.user_id = user_id
def __repr__(self):
return 'User({})'.format(self.user_id)
users = [User(23), User(3), User(99)]
print(users)
# [User(23), User(3), User(99)]
sorted(users, key=lambda u: user_id)
# [User(3), User(23), User(99)]
除了可以用 lambda 表達式外,另一種方式是使用 operator.attrgetter()
from operator import attrgetter
sorted(users, key=attrgetter('user_id'))
# [User(3), User(23), User(99)]
要使用 lambda 表達式還是 attrgetter() 或許只是一種個人喜好。但是通常來說,attrgetter() 要更快一些,而且允許同時提取多個字段值的能力。
這和針對字典的 operator.itemgetter() 的使用很類似。
如果 User 實例還有一個 first_name 和 last_name 屬性的話,可以執(zhí)行如下的排序操作:
by_name = sorted(users, key=attrgetter('last_name', 'first_name'))
同樣,本節(jié)所用到的技術也使用于像 min() 和 max() 這樣的函數(shù)。
min(Users, key=attrgetter('user_id'))
# User(3)
max(Users, key=attrgetter('user_id'))
# User(99)
以上就是python教程對函數(shù)中的參數(shù)進行排序的詳細內容,更多關于Python參數(shù)排序的資料請關注腳本之家其它相關文章!
相關文章
基于Django URL傳參 FORM表單傳數(shù)據(jù) get post的用法實例
今天小編就為大家分享一篇基于Django URL傳參 FORM表單傳數(shù)據(jù) get post的用法實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
VSCode基礎使用與VSCode調試python程序入門的圖文教程
這篇文章主要介紹了VSCode基礎使用+VSCode調試python程序入門圖文教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
python中matplotlib條件背景顏色的實現(xiàn)
這篇文章主要給大家介紹了關于python中matplotlib條件背景顏色的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-09-09
Python實現(xiàn)類似jQuery使用中的鏈式調用的示例
chained calls鏈式調用其實多是指一種方法鏈的程序寫法,這里我們來看一下Python實現(xiàn)類似jQuery使用中的鏈式調用的示例,首先說明一下什么是鏈式調用:2016-06-06
python使用urlparse分析網(wǎng)址中域名的方法
這篇文章主要介紹了python使用urlparse分析網(wǎng)址中域名的方法,涉及Python使用urlparse模塊操作URL的技巧,需要的朋友可以參考下2015-04-04

