rstJkee
@rstJkee

Как отсортировать эффективно по второму аргументу?

Цель: написать программу, которая будет сортировать людей по баллам за 3 предмета
На входе: первая строка - фамилия, вторая строка - баллы за 3 предмета через пробел
Исходный код
data = []

def insert_data():
    str = input().split(" ")
    name = str[0]
    balli = int(str[1]) + int(str[2]) + int(str[3])
    data.append([name, balli])


for i in range(int(input())):
    insert_data()

data.sort(reverse=True, key=lambda item: item[1])
for item in data:
    print(*item)


Как можно после сортировки по баллам, эффективно по затратам времени, отсортировать по фамилиям так, чтобы сортировка по баллам не нарушилась? То есть, если есть 2 человека Афанасьев 200 и Арефьев 200, вначале чтобы стоял Арефьев, а потом Афаньсьев
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 2
@o5a
Чтобы сортировать сразу по нескольким колонкам, можно использовать соответствующие наборы элементов в кортеже/списке, т.е. изменить:
data.sort(key=lambda item: (-item[1], item[0]) )
Ответ написан
aRegius
@aRegius
Python Enthusiast
Попробуйте в качестве аргумента параметра key использовать функцию itemgetter модуля operator:
from operator import itemgetter
data.sort(key=itemgetter(1, 0))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы