2016-05-08 3 views
2

Я пытаюсь создать программу, которая заказывает список слов с моим выбором в алфавитном порядке, но я немного смущен тем, как начать.Python: список слов с выбранным алфавитным порядком

Например, если выбран алфавитный порядок был: UVWXYZNOPQRSTHIJKLMABCDEFG Тогда слова будут отсортированы в следующем порядке:

  • WHATEVER
  • ZONE
  • КАК
  • ОДНАКО
  • HILL
  • ANY
  • Antler
  • КОРОВА

ответ

3

Вы можете использовать ключ сортировки, который отображает буквы в список целых чисел, целые числа, находящиеся в порядке, в котором для сортировки:

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'] 

 Смежные вопросы

  • Нет связанных вопросов^_^