#sorted用法 #1 a=sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}) print(a) ##[1, 2, 3, 4, 5] #2 b=sorted("This is a test string from Andrew".split(), key=str.lower,reverse=True) print(b) #3 student_tuples = [ ('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10), ] res=sorted(student_tuples, key=lambda student: student[2]) # sort by age print(res) ##[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] #4 class Student: def __init__(self, name, grade, age): self.name = name self.grade = grade self.age = age def __repr__(self): return repr((self.name, self.grade, self.age)) student_objects = [ Student('john', 'A', 15), Student('jane', 'B', 12), Student('dave', 'B', 10), ] d=sorted(student_objects, key=lambda student: student.age) # sort by age print(d) #5复杂排序: ##Operator Module Functions ##The key-function patterns shown above are very common, so Python provides convenience functions to make accessor functions easier and faster. The operator module has itemgetter(), attrgetter(), and a methodcaller() function. ## ##Using those functions, the above examples become simpler and faster: print('test 5') from operator import itemgetter, attrgetter print(sorted(student_tuples, key=itemgetter(2))) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] sorted(student_objects, key=attrgetter('age')) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] print('test6') ##The operator module functions allow multiple levels of sorting. For example, to sort by grade then by age: print(sorted(student_tuples, key=itemgetter(1,2))) [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)] sorted(student_objects, key=attrgetter('grade', 'age')) [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)] print('test99,my test') print(sorted(student_tuples,key=lambda student: str(student[1]) + str(student[2])))