2014-06-13 100 views
3

nodes_ancestors是具有level屬性的對象的列表。獲取對象列表中具有最大屬性值的對象

我希望得到最高級別的值列表中的對象,但我剛剛得到的最高值:

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

什麼是做正確的方式?

+0

與往常一樣,不要忘記去思考你想,如果有可能要發生什麼是具有相同「level」值的多個對象。 – DSM

+0

@DSM:是的,這是正確的,但在這種情況下,任何具有最高價值的對象都是必需的 –

回答

8

您可以使用operator.attrgetterkey parametermax的:

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 
>>> 
相關問題