比较嵌套列表中的索引

时间:2017-10-29 03:12:14

标签: python

假设我有一个列表[['apple', 'tree', 4, 5], ['orange', 'bush', 6, 3]]。永远不会有2个嵌套列表,可能更多。我知道如何比较这个特定列表中的索引2,但是我们可以说有6个嵌套列表。

如何比较所有索引2中的索引2,然后在第二个索引中存储具有最大值的列表。关键是我不知道有多少列表,需要让它适用于任何数量。有一个先决条件,它的子列表长度相同,第二个索引将包含一个整数。

对于学校来说,这是一个问题所以我只需要帮助我的基本想法而不是整个代码,因为我不想剽窃。我已经尝试过,但是我的索引超出了范围错误。任何帮助将不胜感激

temp = []
for i in range(len(lst)):
    if lst[i][2] > lst[i+1][2]:
        temp = lst[i]
return temp    `

3 个答案:

答案 0 :(得分:0)

您可以使用key中的max参数:

s = [['apple', 'tree', 4, 5], ['orange', 'bush', 6, 3]]
new_s = max(s, key=lambda x:x[2])

输出:

['orange', 'bush', 6, 3]

现在关于您的代码,您需要将lst[0]分配给temp,以便为您的算法提供基准:

def the_max(lst):
   temp = lst[0] #use lst[0] as the first benchmark.
   for i in range(len(lst)):
      if lst[i][2] > temp[2]:
         temp = lst[i]
   return temp

答案 1 :(得分:0)

通过指定max函数的键,我们可以实现这一点 这里的键是列表中的第二个元素。因此,将key=lambda l:l[2]添加到正常的最大函数是此

的解决方案
>>> max( lst ,key=lambda l :l[2])
['orange', 'bush', 6, 3]
>>> 

阅读这篇文章,了解如何使用密钥的更多细节:lambda What is key=lambda

答案 2 :(得分:0)

lst = [[' apple',' tree',4,5],[' orange',' bush',6 ,3],[' aa',' bb',2,3]]

print max(lst, key=lambda x:x[2])

temp = lst[0]
for i in range(len(lst)):
    temp = temp if temp[2] > lst[i][2] else lst[i]
print temp
  

输出:[' orange',' bush',6,3]