最基本的使用
>>> alist = range(10)
>>> alist
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> random.shuffle(alist)#洗牌
>>> alist
[2, 8, 6, 9, 7, 3, 5, 1, 0, 4]
>>> alist.sort()
>>> alist.sort(reverse=True)#降序
>>> alist
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
使用参数key
现有数据如下
>>> alist = [{'age': 80, 'id': 2}, {'age': 65, 'id': 3}, {'age': 78, 'id': 2}]
现在需要根据id进行排序
>>>sorted(alist,key=lambda x:x['id'])
首先根据id排序,再根据age排序
>>> sorted(alist,key=lambda x:(x['id'],x['age']))
[{'age': 78, 'id': 2}, {'age': 80, 'id': 2}, {'age': 65, 'id': 3}]
使用functools.cmp_to_key(func)
复杂的比较可以通过函数处理后,通过cmp_to_key转化后传值给key参数
比如id升序,age降序
>>> def idagecmp(x,y):
... if x['id']==y['id']:
... return cmp(y,x)
... else:
... return cmp(x['id'],y['id'])
...
>>> sorted(alist,key=functools.cmp_to_key(idagecmp))
cmp参数
在3.x版本中已经移除了该参数,在2.x中就忘记这个参数吧!