Python實用技法第13篇:對自定義類對象排序:attrgetter

上一篇文章: Python實用技法第12篇:經過公共鍵對字典列表排序:itemgetter
下一篇文章: Python實用技法第14篇:根據字段將記錄分組:itertools.groupby()

一、需求🙀

對自定義的類組成的列表進行排序。

二、解決方案😸

內建的sorted()函數可接受一個用來傳遞可調用對象(callable)的參數key,而該可調用對象會返回待排序對象中的某些值,sorted則利用這些值來比較對象。segmentfault

實例:函數

from operator import attrgetter
class User:
def __init__(self,userId):
self.userId=userId

def __repr__(self):
return 'User({})'.format(self.userId)

users=[User(40),User(20),User(30)]
print(users)

#方法1
print(sorted(users,key=lambda u:u.userId))

#方法2
print(sorted(users,key=attrgetter('userId')))

運行結果:code

[User(40), User(20), User(30)]
[User(20), User(30), User(40)]
[User(20), User(30), User(40)]
attrgetter一般會更快一點。上面計數一樣適用min()和max()函數。

上一篇文章:Python實用技法第12篇:經過公共鍵對字典列表排序:itemgetter
下一篇文章:Python實用技法第14篇:根據字段將記錄分組:itertools.groupby()orm

相關文章
相關標籤/搜索