python 列表sort函数和sorted函数应用————实现c++ sort按不同关键字排序功能

首先基本的应用请参考其它教程,百度很多。

现有列表ll=[(1,2),(4,5),(8,9),(1,1),(4,3),(8,20)],要实现排序,排序规则为:按元组第一个元素降序,如果元祖第一个元素相同按元祖第二个元祖升序。
import functools

def tcmp(x,y):
    #只能返回[-1,0,1]分别对应逆序,不变,升序
    if x[0]!=y[0]:
        #因为排序默认为升序排序,所以在x[0]>y[0]情况下,要想让x[0]在y[0]前面
        #也就是逆序,所以要返回-1
        return -1 if x[0]>y[0] else 1
    elif x[1]!=y[1]:
        return 1 if x[1]>y[1] else -1
    else:
        #按原来顺序
        return 0

if __name__=="__main__":
    ll=[(1,2),(4,5),(8,9),(1,1),(4,3),(8,20)]
    ll.sort(key=functools.cmp_to_key(tcmp))#python3没有cmp关键字,所以必须把cmp函数转换为key
    print(ll)

输出:[(8, 9), (8, 20), (4, 3), (4, 5), (1, 1), (1, 2)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值