sorted(iterable, cmp=None, key=None, reverse=False) 在python3.0中cmp参数被删除了
1.sorted()内置函数返回一个新的序列,它可以对任何iterable对象排序
list.sort() 没有返回值,它对原来的序列进行排序,这个函数只是用list
>>>L=[45,32,97,68,23,31] >>>L.sort() [23,31,32,45,68,97] >>>L [23,32,32,45,68,97] >>>S = [45,32,97,68,23,31] >>>res = sorted(S) >>>res [23,31,32,45,68,97] >>>S [45,32,97,68,23,31]
2. key参数是一个函数,这个函数作用于iterable对象的每一个元素,返回一个值,sorted函数根据返回的值对iterable进行排序
>>>rest = [('jhon', 'A', 23), ('mary', 'C', 34), ('Bob', 'B', 13) ] >>>res=sorted(rest, key=lambda x: x[1]) #以成绩排序 >>>res [('jhon','A',23),('Bob','B',13),('mary','C',34)] >>>res=sorted(rest, key=lambda x: x[2]) #以年龄排序 [('Bob','B',13),('jhon','A',23),('mary','C',34)]
对list中的字典进行排序
rest = [ {'name':'lucy', 'age': 22, 'grade':90}, {'name':'ham', 'age':34, 'grade':78}, {'name':'blus', 'age':18, 'grade': 89} ] sorted(rest, key=lambda x: x.get('name','')) #以 name 来排序 sorted(rest, key=lambda x: x.get('grade','')) #以 grade 来排序
对字典进行排序:
rest ={ '1':{'name':'Lucy', 'age':67}, '2':{'name':'Spam', 'age':12}, '3':{'name':'Bob', 'age':34}, '4':{'name':'Joe', 'age':27} } rest = sorted(rest.items(), key=lambda x: x[1].get('age',' '), reverse=True) #以age降序排列