Python list排序

最基本的使用

>>> 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中就忘记这个参数吧!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值