我有一个Python列表,其中每个元素是这样一个元组:
(attr1, attr2, attr3)
我想找到具有最大的元组attr2
,但有attr3 >= 100
。
什么是Python的方法呢?
我有一个Python列表,其中每个元素是这样一个元组:
(attr1, attr2, attr3)
我想找到具有最大的元组attr2
,但有attr3 >= 100
。
什么是Python的方法呢?
你有两个过滤器,并使用一个key
参数最大:
from operator import itemgetter
max(filter(lambda a: a[2] >= 100, yourlist), key=itemgetter(1))
该滤波器也可以表示作为发电机表达式:
max((t for t in yourlist if t[2] >= 100), key=itemgetter(1))
演示:
>>> yourlist = [(1, 2, 300), (2, 3, 400), (3, 6, 50)]
>>> max((t for t in yourlist if t[2] >= 100), key=itemgetter(1))
(2, 3, 400)
>>> max(filter(lambda a: a[2] >= 100, yourlist), key=itemgetter(1))
(2, 3, 400)
需要注意的是,因为你过滤,很容易落得一个空的列表中进行选择,从最大,所以你可能需要捕捉ValueError
小号,除非你需要异常传播到调用堆栈:
try:
return max(filter(lambda a: a[2] >= 100, yourlist), key=itemgetter(1))
except ValueError:
# Return a default
return (0, 0, 0)