python, сортировка списка с помощью ключа, который является подстрокой каждого элемента

Часть программы создает этот список,

[u'1 x Affinity for war', u'1 x Intellect', u'2 x Charisma', u'2 x Perception', u'3 x Population growth', u'4 x Affinity for the land', u'5 x Morale'] 

В настоящее время я пытаюсь сортировать его в алфавитном порядке по названию эволюции, а не по числу. Есть ли способ, которым я могу это сделать, просто не изменяя порядок, что две вещи появляются в списке (как в «intellect x 1»)?

5 Solutions collect form web for “python, сортировка списка с помощью ключа, который является подстрокой каждого элемента”

Вы должны получить «ключ» из строки.

 def myKeyFunc( aString ): stuff, x, label = aString.partition(' x ') return label aList.sort( key= myKeyFunc ) 

Как насчет:

 lst.sort(key=lamdba s: s.split(' x ')[1]) 

Не зная, стандартизированы ли ваши предметы на 1 цифру, 1 пробел, 1 'x', 1 пробел, несколько слов, я написал это:

  mylist = [u'1 x Близость к войне ', u'1 x Интеллект', u'2 x Харизма ', u'2 x Восприятие', u'3 x Рост населения ', u'4 x Близость к земле' , u'5 x Morale ']
 def sort (a, b):
   return cmp ("" .join (a.split () [2:]), "" .join (b.split () [2:]))

 mylist.sort (сортировка)

Вы можете отредактировать синтаксический анализ внутри метода sort но вы, вероятно, получите эту идею.

Привет, Патрик

Для этого вам необходимо выполнить пользовательский сопоставление:

 def myCompare(x, y): x_name = " ".join(x.split()[2:]) y_name = " ".join(y.split()[2:]) return cmp(x_name, y_name) 

Затем вы используете это сравнение в качестве входа в свою функцию сортировки:

 myList.sort(myCompare) 

Когда вы пытаетесь сортировать данные, которые являются по существу настраиваемыми данными, я бы пошел с обычным типом.

Сортировка слиянием
Сортировка пузырьков
Quicksort

  • Python - добавить в словарь на основе добавочного значения в 2 списках
  • Как удалить элементы списка во время циклического перебора самого списка, не повторяя его
  • Как применить функцию к каждому подсписку списка в python?
  • Есть ли способ эффективно получить каждый файл в каталоге, содержащем миллионы файлов?
  • Python - Строка в список
  • Как распечатать список списка в один список в python без использования цикла for или while?
  • Python - создать список с начальной загрузкой
  • Как должен быть извлечен определенный процент равномерно распределенных элементов списка Python?
  • Python - лучший язык программирования в мире.