Я пытаюсь отсортировать список по алфавиту, где заглавные буквы должны появляться перед строчными буквами.python: как сортировать списки в алфавитном порядке по заглавным буквам
l = ['a', 'b', 'B', 'A']
sorted(l)
должно привести к ['A','a','B','b']
Я пробовал эти две формы, но безрезультатно;
>>> sorted(l, key=lambda s: s.lower())
['a', 'A', 'b', 'B']
>>> sorted(l, key=str.lower)
['a', 'A', 'b', 'B']
идеальным решением. Извините за мой предыдущий комментарий :) –
Если у вас есть неанглийские строки, будьте очень осторожны с методами, которые полагаются на использование '.lower()' для нечувствительной к регистру сортировки, они работают только для подмножества символов ASCII. Правильный способ включает в себя немного возиться с языковыми настройками. – wim
Например, это решение не работает для 'lst = ['á', 'b', 'B', 'Á']' на python 2 (возможно, это будет на python3) – wim