умножение на -1 для sorted () не работает для строковых данных в python - PullRequest
1 голос
/ 28 мая 2020

Условия моего списка в строке. Итак, я хочу отсортировать второе условие от большого к меньшему, но "-" у меня не работает. мой код:

import operator
a = int(input())
my_list = []
for i in range(a):
    data = list(map(str, input().split()))
    my_list.append(data)

result = sorted(my_list, key= operator.itemgetter(2, 1, 0))

for i in range(len(result)):
    print(result[i][0])

для ввода, например:

6
Elon 22 2017
Jakob 22 2017
ali 20 2018
sina 30 2008
donald 33 2005
jo 31 2018

первый элемент - это имя. во-вторых, возраст. и последний год. Итак, приоритет для меня - год, возраст от большого к малому и имя. Я знаю, что могу использовать sorted () и выбирать приоритет, но второе условие должно быть обратным. Я искал и обнаружил, что если я использую «-» перед условием, а затем вызываю «reverse = True», условие, имеющее «-», будет отменено. но мое условие - строка, и она не работает!

теперь вывод:

donald
sina
Elon
Jakob
ali
jo

но я ожидал:

donald
sina
Elon
Jakob
jo
ali

1 Ответ

2 голосов
/ 28 мая 2020

Попробуйте следующее:

result = sorted(mylist, key=lambda x: (x[2], -int(x[1])))
for x in result:
    print(x[0])

Вывод

donald
sina
Elon
Jakob
jo
ali
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...