Если ваши вложенные списки всегда имеют только одну строку в первом индексе (как в вашем примере), то вы сортируете свой список списков по максимальному значению, используя max()
в срезе каждого вложенного списка, исключая первый элемент.Затем просто нарежьте окончательный результат на основе количества «лучших» результатов, которые вы хотите.Ниже приведен пример получения «верхних» 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» вложенных списков (цикл после функцииэто просто напечатать что-то похожее на ваш пример).
def max_lists(data, num):
results = sorted(data, key=lambda x: max(x[1:]), reverse=True)
return results[:num]
list_of_lists = [['a',1,19,5],['b',2,4,6],['c',22,5,9],['d',12,19,20]]
top_three = max_lists(list_of_lists, 3)
print(top_three)
for x in top_three:
print(f'max value: {max(x[1:])} list: {x}')
# OUTPUT
# [['c', 22, 5, 9], ['d', 12, 19, 20], ['a', 1, 19, 5]]
# max value: 22 list: ['c', 22, 5, 9]
# max value: 20 list: ['d', 12, 19, 20]
# max value: 19 list: ['a', 1, 19, 5]