Я пытаюсь отсортировать список кортежей.Они в следующем формате:
("First Last", 3, 0)
Или другими словами:
(string, int, int)
Я хочу отсортировать по строковому значению (первый элемент кортежа).Я нашел способ сортировки списка кортежей по определенному элементу из этого удивительного ответа: https://stackoverflow.com/a/3121985/8887398
Это был мой код:
# Yes, I do want to start from element 1 btw
myList[1:].sort(key=lambda tup: tup[0])
Это прекрасно работало, когда у меня были только именав качестве значений строк в моих кортежах, таких как:
("George", 8, 3)
Затем я добавил фамилии, такие как:
("George Manning", 8, 3)
Он больше не сортируется правильно, поэтому я попробовал это:
myList[1:].sort(key=lambda tup: (tup[0].split(" ")[1]))
Я был так уверен, что это сработает.Это не так.Я в замешательстве, так как знаю, что мой метод split
правильно извлекает фамилию из отладки.Что я делаю неправильно?Как мне отсортировать мой список по фамилии?
Вот пример.Да, это фальшивые имена:
myList = [
("NAME", "SOME LABEL 1", "SOME LABEL 2"),
("Kevin Lee", 45, 4),
("John Bowes", 35, 2),
("George Smith", 8, 3),
("Gina Marnico", 40, 3),
("Alice Gordon", 48, 7),
("Lee Jackson", 49, 7),
("Adam Hao", 50, 4),
("Adrian Benco", 23, 2),
("Jessica Farner", 43, 20),
("Greg Hyde", 34, 20),
("Ryan Valins", 39, 7),
("Gary Funa", 49, 7),
("Sam Tuno", 15, 4),
("Katy Sendej", 30, 2),
("Jessica Randolf", 44, 8),
("Gina Gundo", 47, 30)
]
myList[1:].sort(key=lambda tup: (tup[0].split(" ")[1]))
Я пропускаю первое значение, потому что оно обозначает информацию.Я хочу, чтобы этот элемент оставался прежним, а остальная часть списка сортировалась по фамилии.