比如自定义了一个class,并且实例化了这个类的很多个实例,并且组成一个数组。这个数组要排序,是通过这个class的某个字段来排序的。怎么排序呢?

有两种做法:

  • 第一种是定义__cmp__( )方法;

  • 第二种是在sorted( )函数中为key指定一个lambda函数,lambda函数用来排序。

举例(这里都是降序排序,所以指定了reserved=True,可以忽略):

第一种方法:

class BBox(object):
def __init__(self, name, score, x1, y1, x2, y2):
self.name = name
self.score = score
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
def __str__(self):
ret_str = 'name:{:s}, score:{:f}, x1={:d},y1={:d},x2={:d},y2={:d}'.format(
self.name, self.score, self.x1, self.y1, self.x2, self.y2
)
return ret_str
def __cmp__(self, other):
return cmp(self.score, other.score) det test():
x1 = 1
y1 = 3
x2 = 6
y2 = 9
b1 = BBox('box1', 0.5, x1, y1, x2, y2)
b2 = BBox('box2', 0.7, x1, y1, x2, y2)
b3 = BBox('box3', 0.3, x1, y1, x2, y2)
box_lst = [b1, b2, b3]
box_lst = sorted(box_lst, reverse=True)
for box in box_lst:
print(box)

第二种方法:

class BBox(object):
def __init__(self, name, score, x1, y1, x2, y2):
self.name = name
self.score = score
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
def __str__(self):
ret_str = 'name:{:s}, score:{:f}, x1={:d},y1={:d},x2={:d},y2={:d}'.format(
self.name, self.score, self.x1, self.y1, self.x2, self.y2
)
return ret_str det test():
x1 = 1
y1 = 3
x2 = 6
y2 = 9
b1 = BBox('box1', 0.5, x1, y1, x2, y2)
b2 = BBox('box2', 0.7, x1, y1, x2, y2)
b3 = BBox('box3', 0.3, x1, y1, x2, y2)
box_lst = [b1, b2, b3]
box_lst = sorted(box_lst, key=lambda box: box.score, reserved=True)
for box in box_lst:
print(box)

Python自定义排序的更多相关文章

  1. python 自定义排序函数

    自定义排序函数 Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 ...

  2. python自定义排序函数

    Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 sorted() ...

  3. Python自定义排序及我实际遇到的一些题目实例

    写在前面,本文主要介绍Python基础排序和自定义排序的一些规则,如果都比较熟悉,可以直接翻到第三节,看下实际的笔试面试题中关于自定义排序的应用. 一.基础排序 排序是比较基础的算法,与很多语言一样, ...

  4. python中自定义排序函数

    Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 sorted() ...

  5. python之自定义排序函数sorted()

    sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面, ...

  6. Python:Base4(map,reduce,filter,自定义排序函数(sorted),返回函数,闭包,匿名函数(lambda) )

    1.python把函数作为参数: 在2.1小节中,我们讲了高阶函数的概念,并编写了一个简单的高阶函数: def add(x, y, f): return f(x) + f(y) 如果传入abs作为参数 ...

  7. Python应用——自定义排序全套方案

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天的这篇文章和大家聊聊Python当中的排序,和很多高级语言一样,Python封装了成熟的排序函数.我们只需要调用内部的sort函数,就可 ...

  8. Python进阶之自定义排序函数sorted()

    sorted() .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB",& ...

  9. python 顺序读取文件夹下面的文件(自定义排序方式)

    我们在读取文件夹下面的文件时,有时是希望能够按照相应的顺序来读取,但是 file_lists=os.listdir()返回的文件名不一定是顺序的,也就是说结果是不固定的.就比如读取下面这些文件,希望能 ...

随机推荐

  1. NIO相关

    Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/G ...

  2. [NOI2004]郁闷的出纳员(到底是谁郁闷啊?)

    一道 FHQ treap 的裸水题,卡了这么久.(咦~一看就是修为不够)   题解什么的,不用看的(话说那我为什么要写这篇题解咧...),直接 FHQ 模板腾上去就能秒 A 了(打脸)   谈谈 de ...

  3. Linux inode与文件系统关系

    inode只有在linux文件系统的概念(ext3,ext4) .inode节点数量与文件存储的关系. 二.在文件系统初始化时设置合适的节点数量. linux服务器在存储文件小而数量多的情况下,需要考 ...

  4. 007_zkCli.sh

    一. [zk: localhost:2181(CONNECTED) 1] rmr /zkTestPaths_92018-06-25 11:18:30,189 [myid:] - WARN [main- ...

  5. Ubuntu18系统qt生成程序无法双击运行问题

    1.Ubuntu18 安装qt编译生成的程序文件类型为application/x-sharedlib,无法双击直接运行.文件类型应该为x-executable. 2.解决方法 在.pro文件中添加下面 ...

  6. Linq与Lambda常用查询语法

    1.查询全部 2.按条件查询全部 3.去除重复 4.连接查询    between and 5.排序 6.分组

  7. MVC异步方法

    在mvc的开发过程中,有时候我们会需要在action中调用异步方法,这个时候会需要做一些特殊处理.我们会使用到await和async.对应的controller也应该是async的. 在MVC4中直接 ...

  8. 43)django-用户认证,授权,自定义用户认证

    ##用户认证 django自带用户认证系统,包括认证和授权.用户认证系统由用户,权限,用户组,密码,cookie和session给组成. ###用户认证系统设置 #settings.py INSTAL ...

  9. wx.chooseImage

    <view>上传图片</view> <view> <view> <button bindtap="getImg">上传图 ...

  10. Oracle存储过程中跳出循环的写法

    注:本文来源于: <  Oracle存储过程中跳出循环的写法   > Oracle存储过程中跳出循环的写法 记录exit和return的用法 1:exit用来跳出循环 loop IF V_ ...