Сортировка списка списков со смешанными числовыми значениями - PullRequest
0 голосов
/ 09 апреля 2011

Сценарий: список, содержащий «строки» записей списка с различными значениями

Проблема: List.sort не учитывает числовые значения, поэтому значения оказываются повсюду

т.е. 9 появляется в списке после 80

Я пытался использовать

list.sort(key=operator.itemgetter[index])

и делать

list.sort(lambda x,y:int(x[index])<int(y[index])) 

безрезультатно.

Ответы [ 2 ]

3 голосов
/ 09 апреля 2011

Используйте преобразованный номер в качестве ключа.

L.sort(key=lambda x: int(x[index]))
2 голосов
/ 09 апреля 2011

Вы на правильном пути, но operator.itemgetter - это функция, поэтому синтаксис:

list.sort(key=operator.itemgetter(index))

Или, в качестве альтернативы, используйте лямбду:

list.sort(key=lambda x: x[index])

Параметр key - это путь, параметр cmp был удален в Python 3. Если вы все равно хотите его использовать, вам следует использовать cmp () встроенная функция для реализации вашего компаратора:

list.sort(cmp=lambda x, y: cmp(x[index], y[index]))

См. также: http://wiki.python.org/moin/HowTo/Sorting/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...