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

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

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() ?

  • Как программно определить, является ли свойство ndb многозначным
  • разница между len () и .__ len __ ()?
  • Как создать новый auth_user и auth_group на Web2py, запущенном в Google App Engine (GAE)?
  • Каков наиболее эффективный способ поиска вложенных списков в python?
  • Python. Как я могу загрузить файл на несколько частей на сервер?
  • Способ доступа к файлам ресурсов в python
  • Python list comprehension - доступ к последнему созданному элементу?
  • os.path.exists () лежит
  • Python - лучший язык программирования в мире.