我在 Python 中有一个列表,其中每个元素都是这样的元组:

(attr1, attr2, attr3)

我想找到attr2最大但attr3 >= 100的元组。

什么是pythonic方法?

#1楼 票数:16 已采纳

您必须过滤并使用 max 的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 s,除非您需要该异常向上传播调用堆栈:

try:
    return max(filter(lambda a: a[2] >= 100, yourlist), key=itemgetter(1))
except ValueError:
    # Return a default
    return (0, 0, 0)

#2楼 票数:0

如果你还想要最大值的索引,你可以这样做:

 max(filter(lambda a: a[1][2] >= 100, enumerate(yourlist)), key=lambda x:x[1][1])` 

虽然我不得不承认它有点难以理解。

  ask by iomartin translate from so

未解决问题?本站智能推荐:

2回复

列表中两个切片的最小最大值/最大值

我有一个像[3,10,4,3,9,15,6,13]类的列表,我想找到两个不重叠的序列/序列,并通过取最大-最低值来获得最大值值。 它们必须是顺序的,因此您不能从1减去项目3。但是,可以从3减去索引1。 因此,在我的示例中,您将获得对[3,10]和[3,15]。 您如何以编程方式执行此操
2回复

如何在 Python 中找到两个给定属性的 JSON 列表中的哪一项具有最大值?

如果我有一个 json 列表,我怎么知道哪个项目对应于列表的两个最大值? 例如,如果我有一个 json 列表: 我想同时拥有对应于“Reward poignet”和“Reward”最大值的列表? 我试过这个,但它似乎不起作用。 result = max(epmaxinfos, key=lamb
1回复

Python列表检查两个最大值是否相同

在python中,是否可以检查列表中的2个最大值是否相同? 这是我的代码: 如果最大的两个值相同,则max函数将仅返回其中一个。 有没有办法检查列表中的最后两个值是否相同,所以我可以用不同的方式比较它们? (独立功能等) A,B,C和D是字符串。 teamAScore等
3回复

从列表中获取具有最大值的子列表

我正在尝试使用列表中的最大键值检索子列表。 例如。 在这个例子中,我试图检索具有最大置信度分数的子列表: 预期的输出是: 我使用了 itemgetter,但它没有返回所需的输出。
3回复

元组列表中的最大值 (Python)

我有这个元组列表 我想提取具有最大值的元组,即第二个或 var1[1]。 我在编程过程中使用了很多不同的代码,但我现在和直到现在都在使用并且没有任何重大问题的代码是这个: 还有这个: 问题是我需要具有最大值的列表,而不是具有 2 个最大值组合的列表,现在此代码输出var1[3]作为 2
2回复

如何从列表中获得随机最大值?

我想使用python从列表中获取随机最大值。 说,我的清单是: 但是,我想要的是它随机选择一个包含最大值的索引,例如 Python中是否有内置函数可以让我做到这一点?
2回复

元组列表中的最大值

我有一个问题要在动态的元组列表中获得最高的价值。 该列表如下所示: 现在,我遍历列表以获得最高的值(整数): 为了获得最大价值,我做了很多尝试,但没有找到解决问题的结论。 我知道我必须遍历列表中的每个元组,并将其与下一个元组进行比较,但是它不知道如何正确编码。 我也可
5回复

如何获取嵌套列表中的最大值?

我试图获得此列表中每个“国家/地区”的MAX价格。 这是我的代码: 我收到以下错误: TypeError: 'datetime.datetime' object is not subscriptable 当我打印max_price_per_list时,我预计会出现以下结果: