список сортировки списков python с приведением

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

Итак, вот постановка задачи. У меня есть список списков, содержащих строки. Один столбец содержит строки, которые фактически представляют значения с плавающей запятой. И это также столбец, по которому я хочу сортировать. Проблема в том, что 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))
  • , я также попытался определить свое собственное сравнение function:

like:

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

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

[редактировать] Также уже пробовал предложение Игнасио. Я должен упомянуть, что я ДОЛЖЕН использовать python 2.5.

14
задан scigor 2 December 2010 в 09:27
поделиться