所以我有一个包含多个并行对象列表的列表,我想在列表中找到一个索引的最大值,在本例中为[5]。
一旦获得最大值,我如何找到发生的位置并返回该列表的第一个元素?
例如,inputlist = [[70, 'Cherry St,', 43.684371, -79.316756, 23, 9, 14, True, True],
[78, 'Cow Rd', 43.683378, -79.322961, 15, 13, 2, True, False]]
如何让我的函数返回78,因为它包含列表列表中索引[5]的最大值?
答案 0 :(得分:1)
使用max()
函数,但通过参数检查特定索引:
max(inputList, key=lambda x: x[5])
这将返回inputList
中索引5处具有最大值的子列表。如果要实际访问此值,请将[5]
添加到语句的末尾。
由于您似乎希望列表的ID具有最大的第5个元素,因此请在末尾添加[0]
:
max(inputList, key=lambda x: x[5])[0]
答案 1 :(得分:0)
这是你可以做的,使用列表理解两次
inputlist = [[70, 'Cherry St,', 43.684371, -79.316756, 23, 9, 14, True, True],
[78, 'Cow Rd', 43.683378, -79.322961, 15, 13, 2, True, False]]
第5个索引的最大值,考虑输入列表中的所有列表。您可以将此用于任何(n)no成员列表。
value_5th = max([listt[5] for listt in inputlist])
到达目的地后:
这将为您提供该成员列表的第一个元素,该列表在所有其他成员列表中的第5个索引处具有最大/最大元素。请注意,即使多个成员列表在其第5个索引处具有相同的max元素,这也将起作用
Your_ans = [ listt[0] for listt in inputlist if value_5th in listt]
试着给你一个更强大的解决方案。虽然上面给出的答案在我看来非常聪明。