如何在列表列表(嵌套列表包含字符串和数字)中查找具有最大值的列表?

2024-04-26 20:44:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子

list_of_lists = [['a',1,19,5]['b',2,4,6],['c',22,5,9],['d',12,19,20]]

我想得到最高值的前x列表,所以 top 3max(list_of_lists)将返回

^{pr2}$

或者,如果我循环使用list_of_lists,我可以根据所选列表的索引,将每个列表的前x max值附加到另一个列表列表中。在

这是我正在处理的代码,但它有缺陷,因为我认为我需要在每个循环结束时删除所选的答案,这样它就不会出现在下一个循环中,它只查看第4列(x[3])

for y in case_list:
    last_indices = [x[3] for x in case_list]
    print("max of cases is: ",max(last_indices))

目前的结果是:

max of cases is:  22
max of cases is:  22
max of cases is:  22

这个answer给出了top max列表,但是我希望能够灵活地返回top x,而不是只返回一个。在

这个answer给出了单个列表中的最大x值。在


Tags: ofanswerin列表foristopmax
1条回答
网友
1楼 · 发布于 2024-04-26 20:44:42

如果嵌套列表在第一个索引处总是只有一个字符串(如您的示例中所示),那么您可以在每个嵌套列表(不包括第一项)的切片上使用max()按最大值对列表列表进行排序。然后,只需根据您想要的“top”结果的数量对最终输出进行切片。下面是一个获取“top”3个最大值列表的示例。在

list_of_lists = [['a',1,19,5],['b',2,4,6],['c',22,5,9],['d',12,19,20]]

# sort nested lists descending based on max value contained
sorted_list = sorted(list_of_lists, key=lambda x: max(x[1:]), reverse=True)

# slice first 3 lists (to get the "top" 3 max values)
sliced_list = sorted_list[:3]

print(sliced_list)  
# OUTPUT
# [['c', 22, 5, 9], ['d', 12, 19, 20], ['a', 1, 19, 5]]

您可以将它转换为一个简单的函数来获取嵌套列表的前“x”个数(函数后面的循环纯粹是为了打印与您的示例类似的内容)。在

^{pr2}$

相关问题 更多 >