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

21 投票
1 回答
19397 浏览
提问于 2025-04-18 09:42

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
>>>

撰写回答