Собственная функция сравнения для стандартного sort().

По умолчанию сортировка производится лексикографически, т.е. от меньшего к большему и по алфавиту. Метод .sort() производит действия с исходным списком, переставляя элементы внутри него самого, и НЕ возвращает отсортированную копию исходного списка. Для получения отсортированной копии нужно использовать функцию sorted:

          
          unsortedList = ['cba', 'aa', 'baba',  'ccccc']
          sortedList = sorted(unsortedList)
          # не правильно sortedList = unsortedList.sort() вернет None
          print (sortedList)
          
          >>> ['aa', 'aba', 'caccc', 'daba']
          
          

Однако, у функции sorted есть не обязательный параметр key - это функция (на самом деле любой callable объект), которая принимает элемент списка и возвращает объект, который будет использоваться при сравнения во время сортировки вместо оригинального элемента списка. Таким образом если мы хотим произвести сортировку исходного списка по алфавиту, но начиная со второго символа, то мы можем написать собственную функцию и передать ее имя в параметре key. Название функции пишется без скобок.

          
          unsortedList = ['aba', 'aa', 'daba',  'caccc']
          
          # Создаем собственную функцию, которая будет сортировать список:
          def sortByAlphabet(inputItem):
                  return inputItem[1] # Ключом является второй символ в каждом элементе, сортируем по нему
          
          sortedList = sorted(unsortedList, key = sortByAlphabet)
          print (sortedList)
          
          >>> ['aa', 'daba', 'caccc', 'aba']
          
          

Для сортировки в обратном порядке НЕ используем ключевое слово reverse присваивая ему значение True, т.к. по умолчанию оно работает не так мы ожидаем.

          
          unsortedList = ['aba', 'aa', 'daba',  'caccc']
          def sortByAlphabet(inputItem):
                  return inputItem[0]
          sortedList = sorted(unsortedList, key = sortByAlphabet, reverse = True)
          print (sortedList)
          >>> ['daba', 'caccc', 'aba', 'aa']
          
          
http://habrahabr.ru/post/138535/ http://wiki.python.org/moin/HowTo/Sorting