Python cookbook(数据结构与算法)实现对不原生支持比较 *** 作的对象排序算法示例

Python cookbook(数据结构与算法)实现对不原生支持比较 *** 作的对象排序算法示例,第1张

概述本文实例讲述了Python实现对不原生支持比较 *** 作的对象排序算法。分享给大家供大家参考,具体如下:

本文实例讲述了Python实现对不原生支持比较 *** 作的对象排序算法。分享给大家供大家参考,具体如下:

问题:想在同一个类的实例之间做排序,但是它们并不原生支持比较 *** 作。

解决方案:使用内建的sorted()函数可接受一个用来传递可调用对象的参数key,sorted利用该可调用对象返回的待排序对象中的某些值来比较对象。

from operator import attrgetterclass User:  def __init__(self,user_ID):    self.user_ID = user_ID  def __repr__(self):    return 'User({})'.format(self.user_ID)# Exampleusers = [User(23),User(3),User(99)]print(users)# Sort it by user-ID used lambda表达式print(sorted(users,key=lambda r:r.user_ID))# Sort it by user-ID used operator.attrgetter()print(sorted(users,key=attrgetter('user_ID')))

使用lambda表达式还是operator.attrgetter()或许只是个人偏好,但是operator.attrgetter()更快一些,而且具有允许同时提取多个字段值的能力。

这和针对字典的operator.itemgetter()的使用类似。

from operator import attrgetterclass User:  def __init__(self,user_ID,fname,lname):    self.user_ID = user_ID    self.fname=fname    self.lname=lname  def __repr__(self):    return 'User({},{},{})'.format(self.user_ID,self.fname,self.lname)# Exampleusers = [User(23,'Brian','Jones'),User(3,'DavID','Beazley'),User(99,'Aig','Jones')]print(users)# Sort it by lname,fname used operator.attrgetter()print(sorted(users,key=attrgetter('lname','fname')))
>>> ================================ RESTART ================================>>>[User(23,Brian,Jones),DavID,Beazley),Aig,Jones)][User(3,User(23,Jones)]>>>

最后,本节展示的技术同样适用于min()max()这样的函数:

>>> min(users,key=attrgetter('user_ID'))User(3,Beazley)>>> max(users,key=attrgetter('user_ID'))User(99,Jones)>>> max(users,key=attrgetter('fname'))User(3,Beazley)

(代码摘自《Python Cookbook》)

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串 *** 作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录 *** 作技巧汇总》

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

您可能感兴趣的文章:Python实现的数据结构与算法之快速排序详解Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例python冒泡排序算法的实现代码python 实现插入排序算法python选择排序算法的实现代码python 实现归并排序算法python 实现堆排序算法代码python插入排序算法的实现代码python简单实现基数排序算法Python cookbook(数据结构与算法)实现查找两个字典相同点的方法Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例 总结

以上是内存溢出为你收集整理的Python cookbook(数据结构与算法)实现对不原生支持比较 *** 作的对象排序算法示例全部内容,希望文章能够帮你解决Python cookbook(数据结构与算法)实现对不原生支持比较 *** 作的对象排序算法示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1200399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存