在对象列表中获取具有max属性值的对象

时间:2014-06-13 15:43:31

标签: python list attributes max

nodes_ancestors是具有level属性的对象列表。

我想从列表中获取具有最高级别值的对象,但我只获得最高值:

ancestor = max(node.level for node in nodes_ancestors)

什么是正确的方法呢?

1 个答案:

答案 0 :(得分:20)

您可以使用operator.attrgettermax的{​​{3}}:

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