#python #list #search #nested-lists
#python #Список #Поиск #вложенные списки
Вопрос:
Допустим, у меня есть вложенный цикл, в котором я перечислил результат по определенному предмету учащихся с именем, подобным:
records = [[name, score]]
например, предположим, что у нас есть такой список:
records = [['a', 67], ['b', 64], ['c', 63], ['d', 59]]
Итак, здесь я хочу напечатать максимальное значение с именем?
Я все еще новичок в python, поэтому будет здорово, если вы объясните это простым способом.
Заранее спасибо <3
Комментарии:
1.
max(records, key=lambda x: x[1])
?
Ответ №1:
Существует несколько способов сделать это. Один из которых заключается в использовании встроенной функции max, которая находит максимальное значение своих аргументов. В данном случае массив. Поскольку мы хотим получить максимальное значение для оценки, нам нужно получить целое число из массива. Мы можем сделать это, указав ключевую функцию.
Мы можем сделать это с помощью анонимной функции lambda, подобной этой
records = [['a', 67], ['b', 64], ['c', 63], ['d', 59]]
print(max(records, key=lambda x: x[1]))
Или мы можем использовать определенную функцию, подобную этой
records = [['a', 67], ['b', 64], ['c', 63], ['d', 59]]
def getScore(x):
return x[1]
print(max(records,key=getScore))
Существует более простой или понятный способ сделать это. Использование библиотечного оператора и его функции item getter
import operator
records = [['a', 67], ['b', 64], ['c', 63], ['d', 59]]
print(max(records,key=operator.itemgetter(1)))
Комментарии:
1. И не забывайте о
operator.itemgetter
🙂2. Ха, не знал об этом. Обновляю свой ответ, чтобы включить его: D Спасибо @revliscano
3. Что вы имеете в виду? Метки?
4. Я имею в виду оценку, забыл, что я написал оценку в основном сообщении, извините
5.
print(max(records, key=lambda x: x[1])[0])
нравится это?