#python
Вопрос:
У меня есть список различных выражений. Это выглядит так:
my_list = [[1 ,2 ,'M' ,2], [1 ,2 ,'A' , 1], [1 ,2 ,'g' ,3], [1 ,2 ,'o' ,4]]
Я хочу отсортировать список. Ключ всегда должен быть первой записью в списке, в этом случае позиции книги A, M, g, o. Однако верхний и нижний регистр следует игнорировать.
В python я использовал:
my_list.sort(key = itemgetter (3))
Выход есть:
[[1, 2, 'A', 1], [1, 2, 'M', 2], [1, 2, 'g', 3], [1, 2, 'o', 4]]
Проблема в том, что в моем результате сначала сортируются прописные буквы, а затем строчные. Как я могу сортировать строчные и прописные буквы вместе? Результат должен выглядеть так:
[[1 ,2 ,'A' ,1], [1 ,2 ,'g' ,3], [1 ,2 ,'M' ,2], [1 ,2 ,'o' ,4]]
Комментарии:
1. «Ключ всегда должен быть первой записью в списке, в данном случае в книге позиции A, M, g, o». Вы меня здесь потеряли. Буквы всегда находятся на третьей позиции.
Ответ №1:
Воспользуйся key=lambda lst: lst[2].lower()
.
Комментарии:
1. Что вы думаете об использовании casefold вместо этого?
lst[2].casefold()
2. @DaniMesejo Полностью зависит от варианта использования. На данный момент я предполагаю, что ОП не ожидает
'ß'
, что с ним будут так обращаться'ss'
.3. оба хорошо работают, я использую сейчас
key=lambda lst: lst[2].casefold()