如何使用函数的key参数min来比较对象的1个属性列表?
例
class SpecialNumber:
def __init__(self, i):
self.number = i
li = [SpecialNumber(1), SpecialNumber(3), SpecialNumber(2)]
Run Code Online (Sandbox Code Playgroud)
ber*_*nie 45
http://docs.python.org/library/operator.html#operator.attrgetter
from operator import attrgetter
min_num = min(li,key=attrgetter('number'))
Run Code Online (Sandbox Code Playgroud)
交互式会话示例:
>>> li = [SpecialNumber(1), SpecialNumber(3), SpecialNumber(2)]
>>> [i.number for i in li]
[1, 3, 2]
>>> min_num = min(li,key=attrgetter('number'))
>>> print min_num.number
1
Run Code Online (Sandbox Code Playgroud)
vir*_*tor 34
它的:
min(li, key=lambda x: x.number)
Run Code Online (Sandbox Code Playgroud)
你需要一个接受a SpecialNumber并返回其元素的函数.
Dae*_*yth 13
我是通过压倒来做到的 __cmp__
class SpecialNumber:
def __init__(self, i):
self.number = i
def __repr__(self):
return '<SpecialNumber(%d)>' % self.number
def __cmp__(self, other):
return cmp(self.number, other.number)
li = [SpecialNumber(1), SpecialNumber(3), SpecialNumber(2)]
print min(li) # <SpecialNumber(1)>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27946 次 |
| 最近记录: |