2013-11-20 2 views
0

У меня есть список списков, выглядит следующим образом:Как отсортировать список списков (не целых)?

[['10.2100', '0.93956088E+01'], 
['11.1100', '0.96414905E+01'], 
['12.1100', '0.98638361E+01'], 
['14.1100', '0.12764182E+02'], 
['16.1100', '0.16235739E+02'], 
['18.1100', '0.11399972E+02'], 
['20.1100', '0.76444933E+01'], 
['25.1100', '0.37823686E+01'], 
['30.1100', '0.23552237E+01'],...] 

(здесь это выглядит, как будто он уже заказал, но некоторые из остальных элементов, не включенных здесь, чтобы избежать огромного списка, не в порядке)
и я хочу сортировать его по первому элементу каждой пары, я видел несколько очень похожих вопросов, но во всех случаях примеры с целыми числами, я не знаю, если это почему, когда я использую list.sort(key=lambda x: x[0]) или сортировщиком или версией с operator.itemgetter(0) Я получаю следующее:

[['10.2100', '0.93956088E+01'], 
['100.1100', '0.33752517E+00'], 
['11.1100', '0.96414905E+01'], 
['110.1100', '0.25774972E+00'], 
['12.1100', '0.98638361E+01'], 
['14.1100', '0.12764182E+02'], 
['14.6100', '0.14123326E+02'], 
['15.1100', '0.15451733E+02'], 
['16.1100', '0.16235739E+02'], 
['16.6100', '0.15351242E+02'], 
['17.1100', '0.14040859E+02'], 
['18.1100', '0.11399972E+02'], ...] 

Очевидно, что то, что делает, сортирует по первому символу, появляющемуся в первом элементе каждой пары.

Есть ли способ использования list.sort или sorted() для заказа этих пар относительно первого элемента?

ответ

5

dont использовать список как переменное имя!

some_list.sort(key=lambda x: float(x[0])) 

преобразует первый элемент в поплавка и comparit численно вместо алфавиту

(обратите внимание на актерский плавать только для сравнения ... вопрос по-прежнему строка в списке)

+0

Большое спасибо, я опускаю тот факт, что элемент все еще был строкой и должен «заставить» его читать как поплавок. – jealopez

Смежные вопросы