python sort 多级排序_Python使用sort和class实现的多级排序功能示例

本文实例讲述了Python使用sort和class实现的多级排序功能。分享给大家供大家参考,具体如下:

# -*- coding:utf-8 -*-

import random

class Temp:

def __init__(self, a, b, c):

self.a = a

self.b = b

self.c = c

def __str__(self):

return ( ('[a: %d b: %d c: %d]' % (self.a, self.b, self.c)))

def cmp1(temp1, temp2):

if (temp1.a > temp2.a):

return 1;

elif(temp1.a == temp2.a):

if (temp1.b>temp2.b):

return 1;

elif(temp1.b == temp2.b):

return 0;

else:

return -1;

else:

return -1;

def cmp2(temp1):

return temp1.a

temp = []

for i in range(200):

a = random.randint(1, 100)

b = random.randint(1, 100)

c = random.randint(1, 100)

temp.append(Temp(a,b,c))

# for i in range(10):

# print(temp[i])

#

print

print

# for i in sorted(temp,cmp = cmp1):

# print(temp[i])

temp.sort(cmp1)

for i in range(200):

print(temp[i])

运行结果:

[a: 1 b: 61 c: 91]

[a: 1 b: 62 c: 4]

[a: 1 b: 66 c: 6]

[a: 1 b: 73 c: 8]

[a: 2 b: 24 c: 100]

[a: 2 b: 26 c: 26]

[a: 2 b: 52 c: 90]

[a: 4 b: 69 c: 36]

[a: 4 b: 100 c: 66]

[a: 7 b: 59 c: 10]

[a: 7 b: 97 c: 24]

[a: 8 b: 32 c: 84]

[a: 8 b: 49 c: 90]

[a: 9 b: 13 c: 22]

[a: 9 b: 29 c: 99]

[a: 10 b: 52 c: 11]

[a: 11 b: 2 c: 62]

[a: 11 b: 20 c: 56]

[a: 11 b: 38 c: 17]

[a: 11 b: 72 c: 2]

[a: 12 b: 13 c: 48]

[a: 15 b: 39 c: 24]

[a: 15 b: 64 c: 84]

[a: 16 b: 31 c: 89]

[a: 16 b: 60 c: 15]

[a: 16 b: 68 c: 33]

[a: 17 b: 44 c: 97]

[a: 17 b: 82 c: 41]

[a: 17 b: 96 c: 4]

[a: 19 b: 47 c: 22]

[a: 19 b: 97 c: 91]

[a: 20 b: 35 c: 87]

[a: 20 b: 45 c: 71]

[a: 20 b: 58 c: 45]

[a: 21 b: 5 c: 29]

[a: 21 b: 12 c: 1]

[a: 21 b: 24 c: 84]

[a: 21 b: 27 c: 41]

[a: 21 b: 34 c: 4]

[a: 21 b: 44 c: 38]

[a: 21 b: 63 c: 60]

[a: 21 b: 88 c: 60]

[a: 22 b: 15 c: 39]

[a: 23 b: 6 c: 90]

[a: 23 b: 45 c: 36]

[a: 23 b: 95 c: 92]

[a: 24 b: 44 c: 48]

[a: 24 b: 79 c: 86]

[a: 25 b: 40 c: 24]

[a: 25 b: 80 c: 46]

[a: 25 b: 100 c: 40]

[a: 26 b: 34 c: 74]

[a: 26 b: 79 c: 23]

[a: 27 b: 6 c: 51]

[a: 27 b: 8 c: 8]

[a: 27 b: 28 c: 86]

[a: 27 b: 71 c: 48]

[a: 28 b: 5 c: 9]

[a: 29 b: 11 c: 91]

[a: 29 b: 42 c: 17]

[a: 29 b: 47 c: 21]

[a: 31 b: 80 c: 86]

[a: 32 b: 18 c: 24]

[a: 32 b: 30 c: 29]

[a: 32 b: 81 c: 55]

[a: 33 b: 33 c: 10]

[a: 33 b: 36 c: 83]

[a: 34 b: 11 c: 27]

[a: 34 b: 60 c: 52]

[a: 34 b: 62 c: 45]

[a: 34 b: 72 c: 37]

[a: 35 b: 81 c: 50]

[a: 35 b: 88 c: 3]

[a: 36 b: 11 c: 64]

[a: 36 b: 57 c: 93]

[a: 36 b: 92 c: 2]

[a: 38 b: 58 c: 83]

[a: 39 b: 39 c: 66]

[a: 39 b: 47 c: 15]

[a: 40 b: 13 c: 3]

[a: 40 b: 50 c: 66]

[a: 40 b: 99 c: 71]

[a: 41 b: 14 c: 48]

[a: 42 b: 23 c: 38]

[a: 42 b: 26 c: 30]

[a: 42 b: 32 c: 60]

[a: 42 b: 33 c: 61]

[a: 43 b: 27 c: 53]

[a: 43 b: 66 c: 69]

[a: 43 b: 69 c: 81]

[a: 43 b: 71 c: 51]

[a: 44 b: 8 c: 60]

[a: 44 b: 20 c: 7]

[a: 44 b: 48 c: 51]

[a: 44 b: 59 c: 45]

[a: 45 b: 55 c: 95]

[a: 47 b: 45 c: 25]

[a: 47 b: 79 c: 16]

[a: 48 b: 10 c: 32]

[a: 48 b: 17 c: 17]

[a: 48 b: 80 c: 63]

[a: 49 b: 90 c: 32]

[a: 49 b: 93 c: 54]

[a: 50 b: 14 c: 95]

[a: 50 b: 21 c: 75]

[a: 50 b: 41 c: 24]

[a: 50 b: 54 c: 98]

[a: 50 b: 81 c: 70]

[a: 51 b: 33 c: 62]

[a: 52 b: 53 c: 87]

[a: 53 b: 68 c: 68]

[a: 53 b: 70 c: 74]

[a: 53 b: 74 c: 96]

[a: 54 b: 33 c: 16]

[a: 55 b: 80 c: 74]

[a: 55 b: 88 c: 99]

[a: 55 b: 95 c: 44]

[a: 56 b: 14 c: 81]

[a: 56 b: 70 c: 87]

[a: 57 b: 29 c: 21]

[a: 57 b: 81 c: 51]

[a: 58 b: 79 c: 11]

[a: 58 b: 80 c: 87]

[a: 60 b: 78 c: 100]

[a: 61 b: 82 c: 48]

[a: 62 b: 35 c: 64]

[a: 62 b: 65 c: 24]

[a: 62 b: 99 c: 100]

[a: 63 b: 7 c: 61]

[a: 64 b: 24 c: 86]

[a: 64 b: 41 c: 52]

[a: 64 b: 42 c: 40]

[a: 64 b: 63 c: 92]

[a: 66 b: 9 c: 51]

[a: 66 b: 68 c: 78]

[a: 66 b: 78 c: 30]

[a: 66 b: 94 c: 74]

[a: 67 b: 75 c: 41]

[a: 67 b: 78 c: 78]

[a: 68 b: 39 c: 91]

[a: 68 b: 42 c: 19]

[a: 68 b: 42 c: 63]

[a: 69 b: 15 c: 89]

[a: 69 b: 34 c: 86]

[a: 69 b: 37 c: 11]

[a: 69 b: 44 c: 87]

[a: 69 b: 95 c: 68]

[a: 70 b: 44 c: 98]

[a: 70 b: 79 c: 61]

[a: 71 b: 28 c: 95]

[a: 71 b: 81 c: 38]

[a: 72 b: 92 c: 1]

[a: 74 b: 34 c: 74]

[a: 74 b: 67 c: 72]

[a: 75 b: 4 c: 70]

[a: 76 b: 79 c: 90]

[a: 77 b: 71 c: 73]

[a: 78 b: 19 c: 28]

[a: 79 b: 5 c: 17]

[a: 79 b: 84 c: 100]

[a: 79 b: 89 c: 2]

[a: 79 b: 99 c: 33]

[a: 81 b: 17 c: 70]

[a: 81 b: 95 c: 97]

[a: 83 b: 47 c: 51]

[a: 84 b: 22 c: 68]

[a: 84 b: 45 c: 35]

[a: 84 b: 49 c: 63]

[a: 84 b: 90 c: 89]

[a: 85 b: 41 c: 78]

[a: 85 b: 60 c: 19]

[a: 85 b: 61 c: 84]

[a: 86 b: 37 c: 12]

[a: 86 b: 63 c: 17]

[a: 87 b: 5 c: 7]

[a: 87 b: 53 c: 25]

[a: 87 b: 79 c: 38]

[a: 88 b: 4 c: 90]

[a: 89 b: 8 c: 34]

[a: 89 b: 59 c: 21]

[a: 90 b: 1 c: 5]

[a: 90 b: 50 c: 87]

[a: 91 b: 93 c: 63]

[a: 92 b: 81 c: 47]

[a: 92 b: 89 c: 27]

[a: 92 b: 94 c: 51]

[a: 94 b: 37 c: 71]

[a: 95 b: 25 c: 15]

[a: 95 b: 39 c: 56]

[a: 95 b: 59 c: 39]

[a: 96 b: 9 c: 64]

[a: 96 b: 50 c: 20]

[a: 97 b: 12 c: 45]

[a: 97 b: 24 c: 95]

[a: 97 b: 36 c: 72]

[a: 97 b: 41 c: 40]

[a: 97 b: 80 c: 7]

[a: 99 b: 33 c: 23]

[a: 99 b: 56 c: 16]

[a: 100 b: 51 c: 66]

几点需要说明的:

sort接受三个默认的参数,一定要理解cmp函数的含义。我的理解:当a>b时,return 1;意思越大的值越往后排

在cmp1()函数中一定要用return a-b,而前往不要return a>b.因为在Python中,有a==b的时候的判断,感觉和c++不太一样

PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

希望本文所述对大家Python程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

the java home_the java_home environment variable is not defined correctly

在启动tomcat中的startup.bat时,总是报以下错误the java_home environment variable is not defined correctlyThis environment variable is needed to run this programNB: java_home should point to a jdk not a jre环境变量的路径没有问题,把jdk重装…

java中添加背景_java中如何增加背景图片

我的程序代码如下,试了加背景的方法虽然程序没有错误,但是背景还是显示不出来,按钮的setsize好像也不起作用,希望高人能助一臂之力,小女子先写过各位了:、、、、importjava.awt....我的程序代码如下&#x…

java存钱_用Java编写银行存钱取钱

const readline require(readline-sync)//引用readline-synclet s 2;//错误的次数for (let i 0; i < 3; i) {console.log(请输入名&#xff1a;(由英文组成));let user readline.question();console.log(请输入密码&#xff1a;(由数字组成));let password readline.qu…

我的世界java服务器刷_一个教程, 叫你如何在服务器刷op

教 你 如 何 在 服 务 器 内 刷 取op~&#xff01;首先打开JAVA文件夹找到bin\client 里面的Xusage然后打开然后会得到这个内容-Xmixed mixed mode execution (default)-Xint interpreted mode execution only-Xbootclasspath:set search path for boots…

mysql 小雨_Mysql数据库

Mysql服务配置安装mysqld服务&#xff1a;yum groupinstall ‘mysql database server’yum –y install mysql-server php-mysql服务名&#xff1a; mysqld默认的数据库存放在&#xff1a; /var/lib/mysql下启动服务&#xff1a; service mysqld restart可以直接登陆&#xff1…

java eav_动态自定义字段属性–Magento的EAV模型 | 学步园

EAV &#xff1a; Entity - Attribute - Value 的缩写&#xff0c;是数据库模型的一种&#xff0c;使用eav建模的好处是可以动态为数据模型增加或移除属性。1. 问题提出:假设需要定义一个实体Customer的信息&#xff0c;通常我们只要定义一个表为customer&#xff0c;并定义相应…

java 对象视图框架_Stripes视图框架Java对象属性验证和prototype.js Ajax的测试

Stripes视图框架Java对象属性验证&#xff0c;它允许对字段设置是否必须填写&#xff0c;对数字大小进行限制等。我用prototype.js Ajax 将验证后的数据及时地展示出来&#xff0c;下面来看程序。1、编写User实体类此用户共三个属性&#xff1a; name、email、age.package com.…

java中unicode显示乱码_Java 已知Java系统编码是GBK,jtextarea从一编码为Unicode的文本中读取数据,出现乱码,怎么正常显示?...

Java 已知Java系统编码是GBK&#xff0c;jtextarea从一编码为Unicode的文本中读取数据&#xff0c;出现乱码&#xff0c;怎么正常显示&#xff1f;关注:159 答案:2 mip版解决时间 2021-02-03 12:45提问者鉨瞞着所囿亾&#xff0c;爱着誰2021-02-02 16:35我觉得jtextarea中读取…

java中按钮的接口_Java接口基础

接口(interface)1.接口体中包含常量的声明(没有变量)和抽象方法两部分。接口体中只有抽象方法&#xff0c;没有普通的方法&#xff0c;而且接口体中所有的常量访问权限一定是public&#xff0c;而且是static常量(允许省略public、final和static修饰符)&#xff0c;所有的抽象方…

python之if经典语句_Python之if语句、字典

if语句1>利用if语句判断用户是否被禁言banned_users.pybanned_users[Lily,jonh,Susan]userLilyif user not in baned_users:print(user.title()",you can post a response if you wish.")######2>if else 语句age17if age>18:print("You are old enoug…

java 线程加载类_java JVM-线程上下类加载器

public class One {public static void main(String[] args) throws Exception {ClassLoader loaderOne.class.getClassLoader();System.out.println(loader);//获得当前线程的上下文加载器&#xff0c;未改变前和第一种是一样的ClassLoader loader2Thread.currentThread().get…

catalog move.php,catalog.php

/*** WK 列出所有分类及品牌* * * 版权所有 2005-2012 QQ 80342014&#xff0c;并保留所有权利。* &#xff1b;* ----------------------------------------------------------------------------* 这不是一个自由软件&#xff01;您只能在不用于商业目的的前提下对程序代码进…

php get 数据类型,PHP基础-数据类型-integet

integer 是集合 ℤ {…, -2, -1, 0, 1, 2, …} 中的某个数。语法整型值可以使用十进制&#xff0c;十六进制&#xff0c;八进制或二进制表示&#xff0c;前面可以加上可选的符号(- 或者 )。 可以用 负运算符 来表示一个负的integer。二进制表达的 integer 自 PHP 5.4.0 起可用…

php怎么seo,怎样学习seo

学习seo的方法&#xff1a;1、从搜索引擎原理开始&#xff0c;学习seo要先从搜索引擎原理开始&#xff1b;2、多思考&#xff1b;3、学习seo要多看高质量的seo教程&#xff1b;4、多和seo高手交流&#xff0c;经常听听大神的seo理论&#xff0c;集百家之所长&#xff0c;这样会…

php callable 参数,php 利用反射执行callable

现在有一个这样的函数我想利用反射&#xff0c;再用call_user_func执行&#xff0c;当然&#xff0c;我不是白痴和多此一举&#xff0c;主要是因为上面的$func是一个数组中的值&#xff0c;我现在要写一个解析数据函数&#xff0c;会遇到$func&#xff0c;写法如下&#xff1a;…

php ip 短时间 重复,php 限制同一个IP 一段时间不能评论多次,能给我详细解决的...

php 限制同一个IP 一段时间不能评论多次,能给我详细解决的mip版 关注:163 答案:3 悬赏:30解决时间 2021-01-25 15:27已解决2021-01-25 05:54php 限制同一个IP 一段时间不能评论多次,能给我详细解决的最佳答案2021-01-25 06:49在评论的操作中&#xff0c;都需要记录用户ip地址…

java 8 list,JAVA8 ListListInteger list中再装一个list转成一个list操作

我就废话不多说了&#xff0c;大家还是直接看代码吧~List collect IntStream.range(1, 10).boxed().collect(Collectors.toList());List collect1 IntStream.range(10, 20).boxed().collect(Collectors.toList());List> lists new ArrayList<>();lists.add(collect…

matlab中创建一个工程,从文件夹创建新工程

从文件夹创建新工程如果您有许多文件并希望将它们整理为一个工程(无论是否进行源代码管理)&#xff0c;请按照以下步骤创建一个新工程。使用 Simulink Start Page 中的 Folder to Project 模板可轻松将一个文件夹转换为工程。该模板会自动将您的文件添加到工程中&#xff0c;并…

局部遮荫光伏matlab,一种基于随机蛙跳全局搜索算法的局部阴影光伏阵列MPPT控制的制作方法...

本发明涉及一种局部阴影光伏阵列多峰MPPT控制方法&#xff0c;特别涉及一种基于随机蛙跳全局搜索算法的局部阴影光伏列阵多峰MPPT控制。背景技术&#xff1a;伴随太阳能发电的普及&#xff0c;光伏阵列的运行环境变的越来越复杂&#xff0c;局部遮荫导致光伏阵列输出特性曲线出…

打靶法matlab求边值问题代码,数学实验“微分方程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序)...

实验二十七实验报告一、实验名称&#xff1a;微分方程组边值问题数值算法(打靶法&#xff0c;有限差分法)。二、实验目的&#xff1a;进一步熟悉微分方程组边值问题数值算法(打靶法&#xff0c;有限差分法)。三、实验要求&#xff1a;运用Matlab/C/C/Java/Maple/Mathematica 等…