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


Posted in Python onAugust 15, 2018

本文实例讲述了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]

几点需要说明的:

  1. sort接受三个默认的参数,一定要理解cmp函数的含义。我的理解:当a>b时,return 1;意思越大的值越往后排
  2. cmp1()函数中一定要用return a-b,而前往不要return a>b.因为在Python中,有a==b的时候的判断,感觉和c++不太一样
Python 相关文章推荐
python算法演练_One Rule 算法(详解)
May 17 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
Python3 queue队列模块详细介绍
Jan 05 Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
django url到views参数传递的实例
Jul 19 Python
python中sort和sorted排序的实例方法
Aug 26 Python
pytorch torch.expand和torch.repeat的区别详解
Nov 05 Python
python常用数据重复项处理方法
Nov 22 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
python代码实现TSNE降维数据可视化教程
Feb 28 Python
Python常见排序操作示例【字典、列表、指定元素等】
Aug 15 #Python
Centos下实现安装Python3.6和Python2共存
Aug 15 #Python
详解Python中的type和object
Aug 15 #Python
python 通过 socket 发送文件的实例代码
Aug 14 #Python
Python 打印中文字符的三种方法
Aug 14 #Python
django如何连接已存在数据的数据库
Aug 14 #Python
Python requests库用法实例详解
Aug 14 #Python
You might like
php 删除cookie和浏览器重定向
2009/03/16 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
JavaScript this调用规则说明
2010/03/08 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
Python爬取京东的商品分类与链接
2016/08/26 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
pandas计算最大连续间隔的方法
2019/07/04 Python
Python3离线安装Requests模块问题
2019/10/13 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
Python双链表原理与实现方法详解
2020/02/22 Python
python 自动识别并连接串口的实现
2021/01/19 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
物业管理员岗位职责范文
2013/11/25 职场文书
语文教学随笔感言
2014/02/18 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
青春演讲稿范文
2014/05/08 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL