具有两个条件的列表中的最大值

2023-12-26

我有一个 Python 列表,其中每个元素都是一个元组,如下所示:

(attr1, attr2, attr3)

我想找到最大的元组attr2,但那有attr3 >= 100.

pythonic 方法是什么?


您必须过滤并使用keymax 的参数:

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

Demo:

>>> 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有两个条件的列表中的最大值 的相关文章

随机推荐