zoukankan      html  css  js  c++  java
  • 飘逸的python

    之前在统计导出各区服玩家消费的时候需要进行升序降序混搭的多条件排序。
    需求是这样的。区服从小到大排,如果区服相同,则按消费从大到小排。
    实现方法是利用python的sort算法是稳定排序,对数据进行多次排序,先排次要条件,后排主要条件。
    还有一种更简洁的一行流的方法,不过只有当待排数据是数值的时候才有效。此方法利用相反数的性质,在前面加个负号。

    下面上代码。

    #假设数据如下。
    data = '''
    区服,玩家id,累积消费
    3,a,2380
    1,b,11900
    4,e,3250
    1,k,100
    4,j,599
    2,m,872
    3,f,5560
    1,y,2500
    '''
    
    items = [x.split(',') for x in filter(None,data.split('
    '))[1:]] #去掉空行和忽略首行并把字符串转成二维数组
    #方法一
    items.sort(key=lambda x:int(x[2]),reverse=True)#先排消费
    items.sort(key=lambda x:int(x[0]))#然后排区服
    print '
    '.join([','.join(x) for x in items])
    print '-----------'
    
    #方法二
    items = sorted(items,key=lambda x:(int(x[0]),-int(x[2])))
    print '
    '.join([','.join(x) for x in items])
    
    

  • 相关阅读:
    Oracle中Lpad函数和Rpad函数的用法
    SQL中on条件与where条件的区别
    安装sqlServer
    springboot注解加深
    springcloud父项工程pom
    雪花算法
    docker 创建mysql容器
    docker入门
    restful接口规范(安全与幂等)
    mysql
  • 原文地址:https://www.cnblogs.com/pangblog/p/3278160.html
Copyright © 2011-2022 走看看