如何从python

时间:2018-05-14 18:58:52

标签: python list tuples max

我试图从python中的元组列表中获取等于某个值的第n个元素

我有一个更大的类似列表

num = [('A15', 2, 'BC', 721.16), ('A21', 3, 'AB', 631.31), ('A42', 4, 'EE', 245.43)]

我希望只提取元组的第二个元素等于给定值的元组,在本例中为2,并从那些找到最大的第4个元素

目前我的代码如下所示

for ((x[1] for x in num) = 1):
    num_max = max(num_list,key=lambda item:item[3])

问题与设置列表理解等于某个值有关,因为它给了我一个语法错误

道歉,如果已经回答但我找不到

2 个答案:

答案 0 :(得分:1)

试试这个,

In [1]: num = [('A15', 2, 'BC', 721.16), ('A21', 3, 'AB', 631.31), 
               ('A42', 4, 'EE', 245.43),('A15', 2, 'BC', 856.16)]
In [2]: max((i for i in num if i[1] == 2),key=lambda  x:x[3])
Out[2]: ('A15', 2, 'BC', 856.16)

答案 1 :(得分:0)

您有多种选择,例如使用filtermax

result =  max(filter(lambda x: x[1] == 2, num_list), key=lambda x: x[3])

由@chrisz评论,而不是list使用generator

result = max((i for i in x if i[1] == 2), key=lambda x: x[3])

注意:如果使用 python2 ,请考虑使用itertools.ifilter代替filter以避免额外的内存。