如何从列表中每个元素为一个元组的列表中,在元组的第0个索引处获取最大值?

时间:2018-06-24 18:08:25

标签: python python-3.x

我试图从列表中每个元组的第0个索引处获取最大值,其中列表中的每个元素都是一个元组。例如

li = [(100, "Apple"), (50, "Banana"), (150, "Mango")]

是否可以不对列表进行排序就获得maximum value at 0th index of the tuple

3 个答案:

答案 0 :(得分:0)

max允许您指定key,该表达式带有一个lambda表达式,该表达式指示如何在比较时对每个元素进行赋值。您可以按照以下步骤操作

li = [(100, "Apple"), (50, "Banana"), (150, "Mango")]
result = max(li, key=lambda tup: tup[0])    # (150, "Mango")
max_value = result[0]                       # 150

答案 1 :(得分:0)

您还可以在max内使用生成器表达式:

print(max(x for (x,y) in li))
# 150

,或更笼统地说,是使用索引:

print(max(t[0] for t in li))
# 150

生成器表达式会将每个元组的第一个元素生成为max,max将跟踪并返回这些值的最大值-您想要的。

答案 2 :(得分:0)

max(li)将通过比较每个元组的第一个元素,然后比较相等的第二个元素,简单地返回具有最高值的元素。

>>> max(li)
(150, 'Mango')

如果要使用元组的另一个元素来获取最大值,则可以使用函数key的{​​{1}}参数来选择要比较的值。