не зависящая от регистра алфавитная сортировка вложенных списков

Я пытаюсь сортировать этот вложенный список по первому элементу списка внутренних элементов:

ak = [ ['a',1],['E',2],['C',13],['A',11],['b',9] ] ak.sort(cmp=lambda x, y: cmp(x[0], y[0])) for i in ak: { print i } 

по умолчанию python считает A> a, поэтому выход i получается:

 ['A', 11] ['C', 13] ['E', 2] ['a', 1] ['b', 9] 

Я попытался преобразовать все значения списка в четный случай во время сравнения, добавив x [0] .lower и т. д., но не использовать. Как заставить python (я работаю над версией 2.4) делать нечувствительную к регистру сортировку по алфавиту?

Отредактировано:

Джаррет и Брайан, ваши предположения о скобках были правильными! Я забыл положить их! И Джаррет, ваши предложения о том, чтобы не использовать «cmp», работают как шарм! Большое спасибо, ребята!

2 Solutions collect form web for “не зависящая от регистра алфавитная сортировка вложенных списков”

Пытаться:

 ak.sort(key=lambda x:x[0].lower()) 

Я бы рекомендовал вам избегать использования cmp поскольку это было устаревшим в Python 2.6 и удалено в 3.0. Я знаю, что вы используете 2.4, но причина, по которой cmp впал в немилость, заключается в том, что это очень медленный способ сортировки.

Я не уверен, почему ваши усилия с lower не удалось, хотя … возможно, вы забыли использовать вызов функции вместо имени функции? (т. е.: cmp(x[0].lower(), y[0].lower()) сравнении с cmp(x[0].lower, y[0].lower) )

 ak.sort(cmp=lambda x, y: cmp(x[0].lower(), y[0].lower())) 

Вы забыли парнеры в x[0].lower() ?

  • Однострочный веб-сервер Python
  • Выполнение функций без переопределения
  • Есть ли способ в python выполнять все функции в файле, не называя их явно?
  • Демистификация эффективности sharectypes
  • Любой способ отслеживать последние 5 точек данных в python
  • Разделите на N элементов строку пробелами, сохраняющими цитируемые подстроки
  • Когда использование точки с запятой в Python считается «хорошим» или «приемлемым»?
  • Объекты GAE put_multi (), использующие backend NDB
  • Как интегрировать Selenium и Python
  • Чтение огромных данных из файлов и их вызов
  • создавать уникальные ссылки permenant на основе идентификатора пользователя
  • Python - лучший язык программирования в мире.