Сортировка по 3 элементам в кортеже Python 3.2
Попытка отсортировать кортеж, который указывает день рождения человека (день, месяц, год) от самого младшего к старшему.
Так, например
def sort_something(birthday: [(int, int, int)]):
sorted(birthday, key=lambda int:int[2])
return birthday
Однако, когда я запускаю это, он выдает ошибку диапазона индекса.
Traceback (most recent call last):
line 68, in <module>
('Joyce',(2,21,1920))
line 20, in sort_ages
sorted(data, key = lambda int: int[2])
line 20, in <lambda>
sorted(data, key = lambda int: int[2])
IndexError: tuple index out of range
Мысли?
1 ответ
В вашем коде несколько ошибок:
sorted(birthday)
возвращает копию. Не меняетbirthday
int[2]
должен работать, если каждый элемент имеет3
числа (день, месяц, год)- не использовать
int
как имя переменной, это встроенное имя
from datetime import date
def by_date(day_month_year):
return date(*reversed(day_month_year))
L = [(3, 12, 2059), (13, 3, 1999), (1, 1, 2059)]
print(L)
L.sort(key=by_date)
print(L)
Выход
[(3, 12, 2059), (13, 3, 1999), (1, 1, 2059)]
[(13, 3, 1999), (1, 1, 2059), (3, 12, 2059)]