iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >浅析Python中的多条件排序实现
  • 234
分享到

浅析Python中的多条件排序实现

多条Python 2022-06-04 19:06:44 234人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

多条件排序及itemgetter的应用 曾经客户端的同事用as写一大堆代码来排序,在得知python排序往往只需要一行,惊讶无比,遂对Python产生浓厚的兴趣。 之前在做足球的积分榜的时候需要用到多条件排

多条件排序及itemgetter的应用
曾经客户端的同事用as写一大堆代码来排序,在得知python排序往往只需要一行,惊讶无比,遂对Python产生浓厚的兴趣。
之前在做足球的积分榜的时候需要用到多条件排序,如果积分相同,则按净胜球,再相同按进球数,再相同按失球数。
即按积分P、净胜球GD、进球GS、失球GA这样的顺序。
在python中,排序非常方便,排序的参数主要有key、reverse。参数cmp不建议使用了,在python3.0被移除了,用参数key代替。
对于多条件排序,也非常简单,只需要记住下面这句话就行。 即参数key指定的函数返回一个元组,多条件排序的顺序将按照元组的顺序。
看了下面的代码你就明白了,下面是2010世界杯小组赛A组的积分榜。


teamitems = [{'team':'France'   , 'P':1 , 'GD':-3 , 'GS':1 , 'GA':4}, 
      {'team':'Uruguay'   , 'P':7 , 'GD':4 , 'GS':4 , 'GA':0}, 
      {'team':'SouthAfrica' , 'P':4 , 'GD':-2 , 'GS':3 , 'GA':5}, 
      {'team':'Mexico'   , 'P':4 , 'GD':1 , 'GS':3 , 'GA':2}] 
 
print sorted(teamitems ,key = lambda x:(x['P'],x['GD'],x['GS'],x['GA']),reverse=True) 

输出


[{'P': 7, 'GD': 4, 'GS': 4, 'GA': 0, 'team': 'Uruguay'}, 
 {'P': 4, 'GD': 1, 'GS': 3, 'GA': 2, 'team': 'Mexico'}, 
 {'P': 4, 'GD': -2, 'GS': 3, 'GA': 5, 'team': 'SouthAfrica'}, 
 {'P': 1, 'GD': -3, 'GS': 1, 'GA': 4, 'team': 'France'}]

即小组排名是乌拉圭、墨西哥、南非、法国。

不过这样一个个取字典的键值有点??拢??temgetter更简洁优雅,上面那句代码可以用如下替换。


from operator import itemgetter 
print sorted(teamitems ,key = itemgetter('P','GD','GS','GA'),reverse=True) 

有的升序有的降序的情况下怎么多条件排序
之前在统计导出各区服玩家消费的时候需要进行升序降序混搭的多条件排序。
需求是这样的。区服从小到大排,如果区服相同,则按消费从大到小排。
实现方法是利用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('n'))[1:]] #去掉空行和忽略首行并把字符串转成二维数组 
#方法一 
items.sort(key=lambda x:int(x[2]),reverse=True)#先排消费 
items.sort(key=lambda x:int(x[0]))#然后排区服 
print 'n'.join([','.join(x) for x in items]) 
print '-----------' 
 
#方法二 
items = sorted(items,key=lambda x:(int(x[0]),-int(x[2]))) 
print 'n'.join([','.join(x) for x in items]) 

查看图片

--结束END--

本文标题: 浅析Python中的多条件排序实现

本文链接: https://www.lsjlt.com/news/14806.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅析Python中的多条件排序实现
    多条件排序及itemgetter的应用 曾经客户端的同事用as写一大堆代码来排序,在得知Python排序往往只需要一行,惊讶无比,遂对python产生浓厚的兴趣。 之前在做足球的积分榜的时候需要用到多条件排...
    99+
    2022-06-04
    多条 Python
  • sql中怎么实现多条件多字段排序
    本篇文章为大家展示了sql中怎么实现多条件多字段排序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。语句:复制代码 代码如下: select * from ...
    99+
    2022-10-18
  • mysql多条件排序的实现方法是什么
    MySQL中可以使用ORDER BY子句来实现多条件排序。ORDER BY子句可以接受多个排序条件,每个条件可以是升序(ASC)或降...
    99+
    2023-08-25
    mysql
  • 浅析python中SQLAlchemy排序的一个坑
    前言 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。...
    99+
    2022-06-04
    python SQLAlchemy
  • MybatisPlus中的多表条件排序查询
    目录1.pom文件2.自定义返回对象3.mapper方法4.xml自定义sql5.service方法6.QueryUtil自定义的查询工具7.常量配置8.controller方法9....
    99+
    2022-11-13
  • python中if多个条件的示例分析
    小编给大家分享一下python中if多个条件的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python的五大特点是什么python的五大特点:1.简单易...
    99+
    2023-06-14
  • C/C++浅析邻接表拓扑排序算法的实现
    目录前言一、拓扑排序算法的思路二、实现步骤1.求个顶点的入度2.拓扑排序的实现三、测试结果总结前言 在软件开发、施工过程、教学安排等等的一系列活动中,往往需要一个有向无环图来表示其是...
    99+
    2022-11-13
  • 浅谈插入排序算法在Python程序中的实现及简单改进
    Python实现插入排序的一般范例为: #coding=cp936 #coding=cp936 #插入排序算法 def InsertionSort(A): for j in range(1,len...
    99+
    2022-06-04
    浅谈 算法 简单
  • Python中怎么用django filter实现多条件过滤
    在Django中,可以使用`filter()`方法实现多条件过滤。`filter()`方法接收一个或多个条件表达式作为参数,并返回符...
    99+
    2023-10-25
    Python django
  • Python中怎么实现程序流程控制条件
    这篇文章将为大家详细讲解有关Python中怎么实现程序流程控制条件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python 程序流程控制条件判断结构flag1 = so...
    99+
    2023-06-17
  • Python实现冒泡排序算法的示例解析
    目录1. 算法描述2. 算法分析3. 动图展示4. 代码实现5. 算法升级6. 时间复杂度分析1. 算法描述 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排...
    99+
    2022-11-11
  • Python中对元组和列表按条件进行排序的方法示例
    在python中对一个元组排序 我的同事Axel Hecht 给我展示了一些我所不知道的关于python排序的东西。 在python里你可以对一个元组进行排序。例子是最好的说明: >>>...
    99+
    2022-06-04
    示例 中对 条件
  • Python实现针对中文排序的方法
    本文实例讲述了Python实现针对中文排序的方法。分享给大家供大家参考,具体如下: Python比较字符串大小时,根据的是ord函数得到的编码值。基于它的排序函数sort可以很容易为数字和英文字母排序,因为...
    99+
    2022-06-04
    中文 方法 Python
  • Python实现的堆排序算法原理与用法实例分析
    本文实例讲述了Python实现的堆排序算法。分享给大家供大家参考,具体如下: 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆性质:即子结点的...
    99+
    2022-06-04
    算法 实例 原理
  • python读取文件列表并排序的实现示例
    目录一、 修改前的程序代码二、 修改前的程序的执行结果三、 修改后的程序代码四、 修改后的程序执行结果一、 修改前的程序代码 #!/usr/bin/python # -*- codi...
    99+
    2022-11-11
  • Python利用operator模块实现对象的多级排序详解
    前言 最近在工作中碰到一个小的排序问题,需要按嵌套对象的多个属性来排序,于是发现了Python里的operator模块和sorted函数组合可以实现这个功能。本文介绍了Python用operator模块实现...
    99+
    2022-06-04
    详解 模块 对象
  • 浅析node中间件及实现一个简单的node中间件
    目录一、是什么二、封装token校验日志模块koa-bodyparserkoa-static三、总结一、是什么 中间件(Middleware)是介于应用系统和系统软件之间的一类软件,...
    99+
    2022-11-13
  • Python实现的选择排序算法原理与用法实例分析
    本文实例讲述了Python实现的选择排序算法。分享给大家供大家参考,具体如下: 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的...
    99+
    2022-06-04
    算法 实例 原理
  • Python实现的插入排序算法原理与用法实例分析
    本文实例讲述了Python实现的插入排序算法原理与用法。分享给大家供大家参考,具体如下: 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数...
    99+
    2022-06-04
    算法 实例 原理
  • Python实现的基数排序算法原理与用法实例分析
    本文实例讲述了Python实现的基数排序算法。分享给大家供大家参考,具体如下: 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sor...
    99+
    2022-06-04
    基数 算法 实例
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作