Ответ 1
Метод sort()
и функция sorted()
принимают ключевой аргумент:
var.sort(key=lambda v: v.upper())
Функция, названная в key
, вызывается для каждого значения, а возвращаемое значение используется при сортировке, не влияя на фактические значения:
>>> var=['ant','bat','cat','Bat','Lion','Goat','Cat','Ant']
>>> sorted(var, key=lambda v: v.upper())
['ant', 'Ant', 'bat', 'Bat', 'cat', 'Cat', 'Goat', 'Lion']
Чтобы отсортировать Ant
до Ant
, вам нужно будет добавить немного больше информации в ключ, так что в противном случае равные значения сортируются в заданном порядке:
>>> sorted(var, key=lambda v: (v.upper(), v[0].islower()))
['Ant', 'ant', 'Bat', 'bat', 'Cat', 'cat', 'Goat', 'Lion']
Более сложный ключ генерирует ('ANT', False)
для Ant
и ('ANT', True)
для Ant
; True
сортируется после False
, и поэтому слова с верхним регистром сортируются до их младшего эквивалента.
Подробнее см. POWON sorting HOWTO.