Python3.x自定义比较函数
来源:互联网 发布:兰州大学 知乎 编辑:程序博客网 时间:2024/05/23 02:08
转载自:http://blog.csdn.net/greatpresident/article/details/8435259
分类: Python2012-12-25 23:28 417人阅读 评论(0) 收藏 举报
目录(?)[+]
在Python3.x的世界里,cmp函数没有了。那么sorted,min,max等需要比较函数作为参数的函数该如何用呢?
以min函数的定义为例,有两种重载形式:
单参数(一个迭代器):
- min(iterable[, key=func]) -> value
多参数(多个待比较内容):
- min(a, b, c, ...[, key=func]) -> value
本文主要讨论key=func参数的使用 。举例说明吧:
1.自定义对象的比较
我定义了一个类test,有两个成员变量a和b:
- class test:
- def __init__(self,a,b):
- self.a = a
- self.b = b
- x=test(10,'x')
- y=test(2,'y')
- z=test(8,'z')
- minTest=min(x,y,z,key=lambda t:t.a)
于是乎,min函数(换成max,sorted等函数也是类似的)就会根据每个待比较对象的a值进行分别比较,返回a值最小的对象(的引用)赋值给minTest。
输出一下minTest.a,minTest.b就可以验证结果啦。
2.字典值value的比较
有一个字典:
- dic={'b':3,'a':5,'c':9,'d':2}
- sorted(dic)
- ['a', 'b', 'c', 'd']
- >>> sorted(dic.items())
- [('a', 5), ('b', 3), ('c', 9), ('d', 2)]
如果要根据值value排序呢?那么就传入比较函数这一参数就好啦:
- sorted(dic.items(),key=lambda d:d[1])
- [('d', 2), ('b', 3), ('a', 5), ('c', 9)]
P.S.
博主今天闯关The Python Challenge遇到一关,需要统计文本中出现的字符个数并找出出现最少的字符。当然那一关其实不需要自己写比较函数,输出统计结果肉眼看得出。博主借助搜索引擎min函数的key=func参数时,深痛中文Python介绍文章都是旧世界Python2.x的天下,满是在新世界不能用的语法,给Python3.x的初学者带来很多误导,有害无益。故出此文。
博主也是Python初学者,如有大牛批评指正,深感荣幸。
- Python3.x自定义比较函数
- Python3.x自定义比较函数
- Python3.x与Python2.x关于sorted函数用法比较
- Python3.X中的函数
- Python3.x 函数
- Python3.x 函数实例
- Python3自定义函数
- Python3.x --- Print函数用法
- Python3.x中的print()函数
- Python3.x字符串函数详解
- Python3自定义key函数排序
- map自定义比较函数
- map自定义比较函数
- map自定义比较函数
- STL 自定义比较函数
- map自定义比较函数
- set自定义比较函数
- 自定义set比较函数
- 基于de novo似然方法(2)
- 线程同步的方法
- hdu 4091 Zombie’s Treasure Ches 贪心
- ERRNO(3) Linux Programmer's Manual
- 用户管理之基本命令
- Python3.x自定义比较函数
- fopen读写文件
- SSH框架学习(一 、myeclipse10下ssh框架搭建详细图解)
- 实时Javascript开发框架Clouda、Meteor、Firebase对比
- Cocos2d-x 3.0开发(三)点击交互的四种处理
- ACM一种排序题8Java实现
- 获取div的background-image属性
- android基础零碎小记录
- c语言指针详解