我试图从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])
问题与设置列表理解等于某个值有关,因为它给了我一个语法错误
道歉,如果已经回答但我找不到
答案 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)
您有多种选择,例如使用filter
和max
:
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
以避免额外的内存。