1. 程式人生 > >operator.attrgetter() 進行對象排序

operator.attrgetter() 進行對象排序

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() 進行對象排序