Python 获取对象列表中具有最大属性值的对象

Python 获取对象列表中具有最大属性值的对象,python,list,attributes,max,Python,List,Attributes,Max,节点是具有级别属性的对象列表 我想从列表中获取具有最高级别值的对象,但我只是通过以下方式获取最高级别值: ancestor = max(node.level for node in nodes_ancestors) 什么是正确的方法?您可以使用和max: from operator import attrgetter ancestor = max(nodes_ancestors, key=attrgetter('level')) 下面是一个演示: >>> from oper

节点是具有
级别
属性的对象列表

我想从列表中获取具有最高级别值的对象,但我只是通过以下方式获取最高级别值:

ancestor = max(node.level for node in nodes_ancestors)
什么是正确的方法?

您可以使用和
max

from operator import attrgetter
ancestor = max(nodes_ancestors, key=attrgetter('level'))
下面是一个演示:

>>> from operator import attrgetter
>>> class Obj:
...     def __init__(self, val):
...         self.attr = val
...
>>> lst = [Obj(x) for x in range(10)]
>>> obj = max(lst, key=attrgetter('attr'))
>>> obj
<__main__.Obj object at 0x021C2290>
>>> obj.attr
9
>>>
>>来自操作员导入属性器
>>>Obj类:
...     定义初始值(self,val):
...         self.attr=val
...
>>>lst=[Obj(x)表示范围(10)内的x]
>>>obj=max(lst,key=attrgetter('attr'))
>>>obj
>>>对象属性
9
>>>

一如既往,如果可能有多个对象具有相同的
level
@DSM的值,请不要忘记思考您希望发生什么:是的,但在这种情况下,需要具有最高值的任何对象如果我想为其函数
foo(self)获取具有最高返回值的对象,我该怎么做
?我不认为我可以使用
attrgetter
,对吗?可能只是循环并手动选择?使用namedtuple设置函数foo的返回值