Python实现多属性排序
Python实现多属性排序
多属性排序:假如某对象有n个属性,那么先按某规则对属性a进行排序,在属性a相等的情况下再按某规则对属性b进行排序,以此类推。
现有对象Student:
class Student:
def __init__(self, name, math, history, chinese):
self.name = name
self.math = math
self.history = history
self.chinese = chinese
多属性排序:
studentList = []
studentList.append(Student('jack', 70, 60, 85))
studentList.append(Student('tina', 70, 66, 85))
studentList.append(Student('gana', 70, 60, 81))
studentList.append(Student('jhon', 59, 90, 60))
print("未排序:")
for student in studentList:
print(student.name,student.math,student.history,student.chinese)
print("排序后:")
# 排序,属性规则在sorted的key中指定
studentList = sorted(studentList, key=lambda x:(-x.math, x.history, -x.chinese))
for student in studentList:
print(student.name,student.math,student.history,student.chinese)
运行结果:
未排序:
jack 70 60 85
tina 70 66 85
gana 70 60 81
jhon 59 90 60
排序后:
jack 70 60 85
gana 70 60 81
tina 70 66 85
jhon 59 90 60
解释:
studentList = sorted(studentList, key=lambda x:(-x.math, x.history, -x.chinese))
将studentList中的每个对象首先按math属性由大到小排序,在math相等的情况下,按照history从小到大排序,在math和history均相等的情况下按chinese从大到小排序。
Python实现多属性排序的更多相关文章
- java和python根据对象某一个属性排序
最近在学习java,目前看到java如何对一个对象列表进行排序. 我有一个Member类: public Member(String name,Calendar birthday,Sex gender ...
- Python list列表的排序
当我们从数据库中获取一写数据后,一般对于列表的排序是经常会遇到的问题,今天总结一下python对于列表list排序的常用方法: 第一种:内建函数sort() 这个应该是我们使用最多的也是最简单的排序函 ...
- python sort 和sorted排序
当我们从数据库中获取一写数据后,一般对于列表的排序是经常会遇到的问题,今天总结一下python对于列表list排序的常用方法: 第一种:内建方法sort() 可以直接对列表进行排序 用法: list. ...
- MongoDB学习笔记~根据子集合里某个属性排序
回到目录 这个问题是这样的,有一个实体dog,里面有集合属性DogHistory,它里面有一些自己的属性,其中一个是SortNum,主要用来进行排序,而且这个排序可以影响主对象,即影响dog类,这个在 ...
- [python学习] 语言基础—排序函数(sort()、sorted()、argsort()函数)
python的内建排序函数有 sort.sorted两个. 1.基础的序列升序排序直接调用sorted()方法即可 ls = list([5, 2, 3, 1, 4]) new_ls = sorted ...
- json对象数组按对象属性排序
var array = [ {name: 'a', phone: 1, value: 'val_4'}, {name: 'b', phone: 5, value: 'val_3'}, {name: ' ...
- 漫谈python中的搜索/排序
在数据结构那一块,搜索有顺序查找/二分查找/hash查找,而排序有冒泡排序/选择排序/插入排序/归并排序/快速排序.如果遇到数据量和数组排列方式不同,基于时间复杂度的考虑,可能需要用到混合算法.如果用 ...
- js 对象数组根据对象中的属性排序
function createComparisonFunction(propertyName){ return function(object1,object2){ var value1 = obje ...
- python基础——实例属性和类属性
python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...
随机推荐
- wxpython 设置鼠标样式
鼠标指针被设置为放大镜样式.可用的鼠标指针样式有: wx.CURSOR_ARROWwx.CURSOR_RIGHT_ARROWwx.CURSOR_BLANKwx.CURSOR_BULLSEYEwx.CU ...
- wxpython Menus and toolbars
Menus and toolbars A common part in a GUI application is a menubar. A menubar consists of objects ca ...
- html表格设置
表格 表格由 <table> 标签来定义.每个表格均有若干行(由 <tr> 标签定义),每行被分割为若干单元格(由 <td> 标签定义).字母 td 指表格数据(t ...
- SQA冲刺
下学期的第三次冲刺 一 SQA是什么 软件质量保证的目的是使软件过程对于管理人员来说是可见的.它通过对软件产品和活动进行评审和审计来验证软件是合乎标准的.软件质量保证组在项目开始时就一起参与建立计划. ...
- 玩转web之ligerui(一)---ligerGrid又一次指定url
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012116457/article/details/27109227 请珍惜小编劳动成果.该文章为小 ...
- 效率对比:各种语言构造100W个时间对象
原本是用perl写了一个通过给定的时间范围来筛选一个比较大的日志文件.但是测试发现筛选130W行日志需要2分多钟,对其中几个低效率函数单独进行了效率测试,发现构造100W个时间对象所花时间也是个大户. ...
- 利用babel自动编译es6文件
一.检查File-Watchers中Babel的Arguments,有一项presets的设置,把他更改为=es2015,详细设置如下: $FilePathRelativeToProjectRoot$ ...
- React.js 中文文档
转自http://react-china.org/t/react-js/398的jsgeeker 中文文档地址 http://reactjs.cn GitHub地址 https://github.co ...
- maven学习记录四——私服 nexus
8 私服 nexus 安装nexus 启动服务 启动失败的解决方法: 登录nexus 用户名/密码 admin/admin123 仓库类型 Virtual 虚拟仓库 Proxy 代 ...
- How to Create a Basic Plugin
Sometimes you want to make a piece of functionality available throughout your code. For example, per ...