operator.attrgetter() 進行對象排序
阿新 • • 發佈:2018-07-21
col self. span vid cookbook item rom edi ret
## 使用operator.attrgetter() 進行對象排序
1 from operator import attrgetter 2 3 4 class Student: 5 def __init__(self, name, id): 6 self.name = name 7 self.id = id 8 9 def __repr__(self): 10 return "(%s, %s)" % (self.name, self.id) 11 12 13 students = [Student(‘Stanley‘, 167), Student(‘Lily‘, 288), Student(‘Bob‘, 134), Student(‘Peter‘, 111)] 14 15 students_by_id = sorted(students, key=attrgetter(‘id‘)) 16 print(students_by_id) 17 # [(Peter, 111), (Bob, 134), (Stanley, 167), (Lily, 288)] 18 # 使用attrgetter速度比匿名函數更快,且同樣支持多個key,此函數同樣適用於min(), max()等函數,用法與itemgetter相同19 20 students_by_id = sorted(students, key=lambda s: s.id) 21 print(students_by_id) 22 # [(Peter, 111), (Bob, 134), (Stanley, 167), (Lily, 288)]
參考資料:
Python Cookbook, 3rd edition, by David Beazley and Brian K. Jones (O’Reilly).
operator.attrgetter() 進行對象排序