Python的attrgetter()
1 # -*- coding: utf-8 -*- 2 # 在排序时, 可以用lambda表达式将对象map成keys 3 # 亦可以使用operator包中的attrgetter和itemgetter函数以提高效率 4 # 参考 http://wiki.python.org/moin/HowTo/Sorting 5 6 # 考虑 Student 对象 7 class Student: 8 def __init__(self, name, grade, age): 9 self.name = name 10 self.grade = grade 11 self.age = age 12 def __repr__(self): 13 return repr((self.name, self.grade, self.age)) 14 15 # 建立一组Student对象 16 students = [ 17 Student('jane', 'B', 12), 18 Student('john', 'A', 12), 19 Student('dave', 'B', 10), 20 ] 21 22 from operator import itemgetter, attrgetter 23 24 # 对students按照年龄排序 25 print sorted(students, key=attrgetter('age')) 26 # 其等价于 27 print sorted(students, key=lambda o: o.age) 28 # 输出: >>> [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] 29 30 # 亦可以按多个key排序, 先按age再按grade排序 31 print sorted(students, key=attrgetter('age', 'grade')) 32 # 输出: >>> [('dave', 'B', 10), ('john', 'A', 12), ('jane', 'B', 12)]
posted on 2012-12-25 22:54 rongyilin 阅读(2219) 评论(0) 编辑 收藏 举报