上一篇文章:Python實用技法第12篇:通過公共鍵對字典列表排序:itemgetter
下一篇文章:Python實用技法第14篇:根據欄位將記錄分組:itertools.groupby()
1、需求?
對自定義的類組成的列表進行排序。
2、解決方案?
內建的sorted()函式可接受一個用來傳遞可呼叫物件(callable)的引數key,而該可呼叫物件會返回待排序物件中的某些值,sorted則利用這些值來比較物件。
例項:
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`)))
執行結果:
[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()