Вы можете использовать ключ сортировки, который отображает буквы в список целых чисел, целые числа, находящиеся в порядке, в котором для сортировки:
sort_key = {l: i for i, l in enumerate('UVWXYZNOPQRSTHIJKLMABCDEFG')}
sorted_words = sorted(words, key=lambda w: [sort_key[l] for l in w])
Списки упорядочены лексикографически, то есть , путем сравнения элементов из двух списков один за другим, пока не будет найден другой элемент, который затем определяет порядок. Для слов 'ANTLER'
и 'ANY'
отображаются соответственно [19, 6, 12, 17, 23, 10]
и [19, 6, 4]
, поэтому 'ANY'
будет указан первым как 4 < 10
.
Демо:
>>> words = ['ANTLER', 'ANY', 'COW', 'HILL', 'HOW', 'HOWEVER', 'WHATEVER', 'ZONE']
>>> sort_key = {l: i for i, l in enumerate('UVWXYZNOPQRSTHIJKLMABCDEFG')}
>>> sorted(words, key=lambda w: [sort_key[l] for l in w])
['WHATEVER', 'ZONE', 'HOW', 'HOWEVER', 'HILL', 'ANY', 'ANTLER', 'COW']