Способ сортировки списка списков? - PullRequest
9 голосов
/ 05 марта 2011

У меня есть список списков (не может быть кортежами, поскольку я должен генерировать его динамически), и он структурирован как список списков с одним целым и одним числом с плавающей запятой. Так:

[[1,1.0345],[2,5.098],[3,4.89],[2,5.97]]

Я хочу отсортировать его, но мне удалось получить только встроенную функцию сортировки, чтобы сортировать ее по первому элементу списков или ничего не делать, но мне нужно отсортировать их по второму элементу списка и Я не хочу реализовывать свою собственную функцию сортировки. Вот пример того, что я хотел бы:

[[1,1.0345],[3,4.89],[2,5.098],[2,5.97]]

Может кто-нибудь сказать мне, как заставить одну из встроенных функций сортировки сделать это?

Ответы [ 3 ]

20 голосов
/ 05 марта 2011

Передайте аргумент key.

L.sort(key=operator.itemgetter(1))
12 голосов
/ 05 марта 2011
>>> l = [[1,1.0345],[2,5.098],[3,4.89],[2,5.97]]
>>> l.sort(key=lambda x: x[1])
>>> l
[[1, 1.0345], [3, 4.8899999999999997], [2, 5.0979999999999999], [2, 5.9699999999999998]]
3 голосов
/ 05 марта 2011

Как насчет использования ключевого параметра сортировки ...

sorted_list = sorted([[1,1.0345],[3,4.89],[2,5.098],[2,5.97]], key=lambda x: x[1])

Это говорит Python сортировать список списков, используя элемент с индексом 1 каждого списка в качестве ключа для сравнения.

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