-
python将对象放入列表根据某个属性排序_python实现对象列表根据某个属性排序的方法详解...
2020-12-10 20:11:51本文实例讲述了python实现对象列表根据某个属性排序的方法。分享给大家供大家参考,具体如下:对于一个已有的python list, 里面的内容是一些对象,这些对象有一些相同的属性值, 在一些特定的情况下,需要自己选择...本文实例讲述了python实现对象列表根据某个属性排序的方法。分享给大家供大家参考,具体如下:
对于一个已有的python list, 里面的内容是一些对象,这些对象有一些相同的属性值, 在一些特定的情况下,需要自己选择特定的排序,也就是根据某一个具体的属性来排序,在网上找了下资料,一般来说有两种方法,但从根本上来说,还是调用了list.sort 方法来实现。下面是简单的测试代码片段:
#coding:utf-8
class Person:
def __init__(self,name,age,salary):
self.name = name
self.age = age
self.salary = salary
obj_list = [
Person('juneys',20,30000),
Person('sam',20,20000),
Person('eddy',22,25000),
Person('eagle',25,10000)
]
#第一种方法
obj_list.sort(cmp=None, key=lambda x:x.salary, reverse=False)
print '***********第一种方法***********************'
for obj in obj_list:
print obj.name,obj.salary
# 第二种方法,更适合于大量数据的情况.
try:
import operator
except ImportError:
cmpfun= lambda x: x.count # use a lambda if no operator module
else:
cmpfun= operator.attrgetter("salary") # use operator since it's faster than lambda
obj_list.sort(key=cmpfun, reverse=True)
print '***********第二种方法***********************'
for obj in obj_list:
print obj.name,obj.salary
构造了一个 Person 类, 然后初始化一些对象放入obj_list 中, 然后想根据工资进行排序,方法一与方法二分别实现了升序或者降序。 以此类推还可以实现按年龄排序等.
本例结果如下:
***********第一种方法***********************
eagle 10000
sam 20000
eddy 25000
juneys 30000
***********第二种方法***********************
juneys 30000
eddy 25000
sam 20000
eagle 10000
PS:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:http://tools.jb51.net/aideddesign/paixu_ys
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
本文标题: python实现对象列表根据某个属性排序的方法详解
本文地址: http://www.cppcns.com/jiaoben/python/262093.html
-
python实现对象列表根据某个属性排序的方法详解
2020-12-31 17:25:26本文实例讲述了python实现对象列表根据某个属性排序的方法。分享给大家供大家参考,具体如下: 对于一个已有的python list, 里面的内容是一些对象,这些对象有一些相同的属性值, 在一些特定的情况下,需要自己选择... -
python将对象放入列表根据某个属性排升序_python实现对象列表根据某个属性排序的方法详解...
2020-12-10 20:11:40python实现对象列表根据某个属性排序的方法详解发布时间:2020-09-12 05:06:39来源:脚本之家阅读:105本文实例讲述了python实现对象列表根据某个属性排序的方法。分享给大家供大家参考,具体如下:对于一个已有的...python实现对象列表根据某个属性排序的方法详解
发布时间:2020-09-12 05:06:39
来源:脚本之家
阅读:105
本文实例讲述了python实现对象列表根据某个属性排序的方法。分享给大家供大家参考,具体如下:
对于一个已有的python list, 里面的内容是一些对象,这些对象有一些相同的属性值, 在一些特定的情况下,需要自己选择特定的排序,也就是根据某一个具体的属性来排序,在网上找了下资料,一般来说有两种方法,但从根本上来说,还是调用了list.sort 方法来实现。下面是简单的测试代码片段:
#coding:utf-8
class Person:
def __init__(self,name,age,salary):
self.name = name
self.age = age
self.salary = salary
obj_list = [
Person('juneys',20,30000),
Person('sam',20,20000),
Person('eddy',22,25000),
Person('eagle',25,10000)
]
#第一种方法
obj_list.sort(cmp=None, key=lambda x:x.salary, reverse=False)
print '***********第一种方法***********************'
for obj in obj_list:
print obj.name,obj.salary
# 第二种方法,更适合于大量数据的情况.
try:
import operator
except ImportError:
cmpfun= lambda x: x.count # use a lambda if no operator module
else:
cmpfun= operator.attrgetter("salary") # use operator since it's faster than lambda
obj_list.sort(key=cmpfun, reverse=True)
print '***********第二种方法***********************'
for obj in obj_list:
print obj.name,obj.salary
构造了一个 Person 类, 然后初始化一些对象放入obj_list 中, 然后想根据工资进行排序,方法一与方法二分别实现了升序或者降序。 以此类推还可以实现按年龄排序等.
本例结果如下:
***********第一种方法***********************
eagle 10000
sam 20000
eddy 25000
juneys 30000
***********第二种方法***********************
juneys 30000
eddy 25000
sam 20000
eagle 10000
PS:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:http://tools.jb51.net/aideddesign/paixu_ys
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
-
根据list中对象的某个属性值对list进行排序
2018-09-28 16:06:10package javaTest; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator;...import java.util.List; public class ListSort<E> { public static void ma...package javaTest; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class ListSort<E> { public static void main(String[] args) { List<User> list = new ArrayList<User>(); // 创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中 User u1 = new User(); u1.setAge(20); u1.setBirthDay("1998-01-01"); User u2 = new User(); u2.setAge(19); u2.setBirthDay("1999-01-01"); User u3 = new User(); u3.setAge(21); u3.setBirthDay("1997-01-01"); list.add(u1); list.add(u2); list.add(u3); System.out.println("排序前:" + list); //把人员按照年龄从小到大排列 Collections.sort(list, new Comparator<User>() { @Override public int compare(User u1, User u2) { if (u1.getAge() > u2.getAge()) { return 1; } if (u1.getAge() == u2.getAge()) { return 0; } return -1; } }); System.out.println("升序排序后:" + list); //把人员按照年龄从大到排列 Collections.sort(list, new Comparator<User>() { public int compare(User u1, User u2) { // 按照学生的年龄进行降序排列 if (u1.getAge() > u2.getAge()) { return -1; } if (u1.getAge() == u2.getAge()) { return 0; } return 1; } }); System.out.println("降序排序后:" + list); //把人员按照出生日期从小到大排列 Collections.sort(list, new Comparator<User>() { public int compare(User u1, User u2) { return u1.getBirthDay().compareTo(u2.getBirthDay()); //大于返回1;小于返回-1;等于返回0 } }); System.out.println("降序排序后:" + list); //把人员按照出生日期从大到小排列 Collections.sort(list, new Comparator<User>() { public int compare(User u1, User u2) { return -u1.getBirthDay().compareTo(u2.getBirthDay()); //大于返回1;小于返回-1;等于返回0 } }); System.out.println("降序排序后:" + list); //如果字段为boolean型,可以采用下面的方式比较大小 Boolean b1 = true; // 创建Boolean对象1 Boolean b2 = false; // 创建Boolean对象0 Boolean b3 = true; // 创建Boolean对象1 System.out.println(b1); int i; i = b1.compareTo(b2); // b1和b2进行比较 i=1 System.out.println(i);//1-0 i = b2.compareTo(b1); // b2和b1进行比较 i=-1 System.out.println(i);//0-1 i = b1.compareTo(b3); // b1和b3进行比较 i=0 System.out.println(i);//1-1 } } class User{ private int age; private String birthDay; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getBirthDay() { return birthDay; } public void setBirthDay(String birthDay) { this.birthDay = birthDay; } @Override public String toString() { return getAge()+":"+getBirthDay(); } }
-
JAVA里List集合中的对象根据对象的某个属性值降序或者升序排序java8
2021-01-05 12:05:40import java.util.Comparator; import java.util.List; public class Test { public static void main(String[] args) { List<... //根据TestDto对象的priority字段降序排序 dtoList.sort(Copackage com.stream; import java.util.Comparator; import java.util.List; public class Test { public static void main(String[] args) { List<TestDto> dtoList=TestDto.getDtos(); //根据TestDto对象的priority字段降序排序 dtoList.sort(Comparator.comparing(TestDto::getPriority).reversed()); //根据TestDto对象的sort字段升序排序 // dtoList.sort(Comparator.comparing(TestDto::getSort)); for (TestDto d:dtoList ) { System.out.println(d); } } }
-
java的list集合如何根据对象中的某个字段排序
2018-08-15 20:40:53集合提供了一个工具类:java.util.Collections 集合的工具类提供了若干静态方法,可以方便...但是如果要求根据集合中某个元素的值排序,该如何进行呢? 代码演示 public static void main(String[] args) { ... -
list集合的元素为Map根据map中某个key的值进行排序,或者元素为对象,根据对象的属性值进行排序
2020-04-20 14:36:09根据org_code值进行升序排列 第二种 List sysAreas = sysAreaMapper.selectByExample(condition); Collections.sort(sysAreas, new Comparator() { @Override public int compare(SysArea o1, SysArea o2) { return... -
python将对象放入列表根据某个属性排升序_对python 对象列表根据某个属性排序的方法...
2020-12-10 20:11:41对于一个已有的python list, 里面的内容是一些对象,这些对象有一些相同的属性值, 在一些特定的情况下,需要自己选择特定的排序,也就是根据某一个具体的属性来排序,在网上找了下资料,一般来说有两种方法,但从... -
python对象的三个属性_对python 对象列表根据某个属性排序的方法
2020-11-23 23:43:40对于一个已有的python list, 里面的内容是一些对象,这些对象有一些相同的属性值, 在一些特定的情况下,需要自己选择特定的排序,也就是根据某一个具体的属性来排序,在网上找了下资料,一般来说有两种方法,但从... -
根据list中map的某个键进行排序(根据list中对象的某个属性进行排序)
2019-07-04 15:12:00//如果是对象则将所有HashMap<...换成对象即可,当然,if里获取值的方式也要进行修改 Collections.sort(clList, new Comparator<HashMap<String, Object>>() { @Override public int compa... -
Java集合中对象排序问题, 根据对象中的某个属性排序(集合的相关操作)
2020-05-29 17:04:271. 根据集合中对象的某个属性值, 排序 List<RoomCartypeParamters> roomCartypeParamtersList = new ArrayList<>(); //进行排序, 按照指定字段升序排列 Collections.sort(roomCartypeParamtersList, ... -
java8 list多条件倒序排序, 根据对象内的某个条件去重
2020-11-11 18:50:49需求:lambda根据多个条件对list进行排序,并且根据对象内的某个属性值来去重 resList = resList.stream() .sorted(Comparator.comparing(ResCenterAuditDTO::getCreateTime).reversed()) .sorted(Comparator.... -
根据对象的某个属性名的值从新排序
2019-10-22 23:49:39var list=[ { name:"aaa", score:80 }, { name:"bbb", score:70 }, { name:"ccc", score:90 }, { name:"ddd... -
Lambda表达式 | List转Map、List根据某个变量快速排序
2019-01-25 23:49:06个人记录 由于本人用的也不是很精通,所有做个记录,方便查阅 快速处理集合 | Java8 新特性 好用的 Stream ...以上新的coinList就是list中每个AllCoinEntity对象的coin字段的值 可参考: https://cloud.... -
java 对list map排序_JAVA中对List,Object>>根据map某个key值进行排序
2021-02-12 15:13:34方法compareTo()比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别...普通的Integer 类型key进行比较:public classjava_ListMapSort {public static voidmain(String[] args) {List> lis... -
JAVA中对List,Object>>根据map某个key值进行排序
2017-11-01 21:09:00方法compareTo()比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。返回整数,1,-1,0;返回1表示大于,返回-1表示小于,返回0表示相等。普通的Integer 类型key进行... -
根据List里对象的某个属性值来对List排序
2018-08-28 19:31:05有一个场景,就是一个有list,list里面放的是Card对象,Card对象有多个属性值,包括卡用户信息、卡类型cardType,这个list是查询用户卡包得到的卡列表。卡的类型有普卡、金卡、钻卡,等级由低到高排序分别是:普卡、... -
List去重根据对象某个属性或者对象(比如:存放的是String)
2018-12-28 00:22:06方式1,2利用Set 不允许重复的值进行去重--- TreeSet其实也是可以的 只是会重新排序 方式3 方式一,利用HashSet不能添加重复数据的特性 由于HashSet不能保证添加顺序,所以只能作为判断条件: private static void... -
List(Object)排序
2019-02-26 11:20:25需求是根据一个对象的list中的某个字段的值排序,比如根据列表中人的年龄排序: 在实体类中继承Comparable接口并重写compareTo()方法,方法里是自己需求比较的函数,可以根据自己的需求去写。 package ... -
List集合快速排序
2019-11-01 18:55:40List中存放的是某个对象,现在要把这个集合根据对象的某个属性进行排序,不过需要把要排序的属性值变为可运算的数值,才能实现此功能。 代码示例如下: import java.util.Collections; import java.util.... -
Kotlin List 排序
2020-04-23 10:27:59Kotlin中List,根据对象某个属性值进行升序或者倒序排列 升序: data.sortBy { it.power } data 为List,it.power 代表 data 对象的某个属性。 倒序: data.sortByDescending { it.inWheat } it.inWheat ... -
Java8 stream sorted排序时包括null
2018-09-07 19:19:40开发过程中对象集合根据某个属性排序是常常遇到的情况,但有时排序会遇到对应属性值为null的情况,会报空指针异常。 查找stream.sorted源码看到有Comparator.nullsFirst和Comparator.nullsLast方法,使用方法如下:...
-
MySQL 存储过程(创建海量数据实验环境)
-
informix驱动.zip
-
PowerBI重要外部工具详解
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
【狗狗币】狗狗币在2月份在Twitter上的受欢迎程度超过了比特币
-
26灰雀 教案.docx
-
铅卤化物钙钛矿ABX3晶体薄膜量子点
-
七种分布式事务的解决方案,一次讲给你听
-
异地恋时钟之旅.zip
-
CMU_VoxelNet-源码
-
人脸识别是符合国家政策趋势惠及民生
-
SpringCloud 第八章:SpringCloud Config
-
初学者-源码
-
扑印度尼西亚文化-源码
-
库存分析-源码
-
SYN531R 433M解码程序
-
【linux】解压|压缩|打包命令(tar|zip|rar|bz)
-
MySQL NDB Cluster 负载均衡和高可用集群
-
TechHW4:在这里,我们的任务是使用引导程序及其组件以及母版页和内容页为PetMed创建UI-源码
-
图片格式与设计那点事