3
nodes_ancestors
是具有level
屬性的對象的列表。獲取對象列表中具有最大屬性值的對象
我希望得到最高級別的值列表中的對象,但我剛剛得到的最高值:
ancestor = max(node.level for node in nodes_ancestors)
什麼是做正確的方式?
nodes_ancestors
是具有level
屬性的對象的列表。獲取對象列表中具有最大屬性值的對象
我希望得到最高級別的值列表中的對象,但我剛剛得到的最高值:
ancestor = max(node.level for node in nodes_ancestors)
什麼是做正確的方式?
您可以使用operator.attrgetter
和key
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
>>>
與往常一樣,不要忘記去思考你想,如果有可能要發生什麼是具有相同「level」值的多個對象。 – DSM
@DSM:是的,這是正確的,但在這種情況下,任何具有最高價值的對象都是必需的 –