gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:11:40 25 4
gpt4 key购买 nike

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

(attr1, attr2, attr3)

我想找到具有最大 attr2attr3 >= 100 的元组。

什么是 pythonic 方法?

最佳答案

你必须过滤并使用一个 key 参数给 max:

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)

关于python - 具有两个条件的列表中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12459656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com