Список списков со списком python

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

Итак, вот настройка проблемы. У меня есть список списков, содержащих строки. Один столбец содержит строки, которые фактически представляют значения float. И это также столбец, который я хочу сортировать. Проблема в том, что python, кажется, игнорирует знак - (минус) на входах. Итак, список примеров:

[[blaa, '0.3', bli], [bla, '0.1', blub], [bla, '-0.2', blub]]

сортируется следующим образом:

[[bla, '0.1', blub], [bla, '-0.2', blub], [blaa, '0.3', bli]]

а не как это должно быть:

[[bla, '-0.2', blub],[bla, '0.1', blub], [blaa, '0.3', bli]]

До сих пор я пробовал:

  • литье второго столбца для плавания и сортировка по этой колонке

как:

for i in mylist:
  i[1] = float(i[1])    

mylist.sort(key=lambda x: x[1])

или

for i in mylist:
  i[1] = float(i[1]) 

mylist.sort(key=operator.itemgetter(1))
  • Я также попытался определить свое собственное сравнение Функция:

как:

mylist.sort(cmp=lambda x,y: cmp(float(x), float(y)), key=operator.itemgetter(1))

И любая другая комбинация вышеуказанных методов, также то же самое с sorted. До сих пор без успеха знак минус игнорируется каждый раз. Как это решить?

[править] И уже попробовал предложение Игнасио. Я должен упомянуть, что я должен использовать python 2.5.

Ответы

Ответ 1

l = [["blaa", "0.3", "bli"], ["bla", "0.1", "blub"], ["bla", "-0.2", "blub"]]

l.sort(key=lambda x: float(x[1]))

>>> [['bla', '-0.2', 'blub'], ['bla', '0.1', 'blub'], ['blaa', '0.3', 'bli']]

Ответ 2

Шахта отлично работает, Python 3.1.2:

>>> l=[['', '0.3', ''], ['', '0.1', ''], ['', '-0.2', '']]
>>> sorted(l,key=lambda x:float(x[1]))
[['', '-0.2', ''], ['', '0.1', ''], ['', '0.3', '']]

и 2.6.5:

>>> l=[['', '0.3', ''], ['', '0.1', ''], ['', '-0.2', '']]
>>> sorted(l,key=lambda x:float(x[1]))
[['', '-0.2', ''], ['', '0.1', ''], ['', '0.3', '']]