获取对象列表中属性值最大的对象
nodes_ancestors
是一个包含多个对象的列表,每个对象都有一个叫 level
的属性。
我想从这个列表中找到 level
属性值最高的那个对象,但我现在只得到了最高的值,代码是:
ancestor = max(node.level for node in nodes_ancestors)
那我该怎么做才对呢?
1 个回答
45
你可以使用 operator.attrgetter
这个工具,以及 key
参数 来帮助你找到最大值:
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
>>>