带强制转换的列表的python排序列表

2024-10-03 13:21:10 发布

您现在位置: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))
  • 我也试着定义我自己的比较 功能:

比如:

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

以及上述方法的任何其他组合,也与sorted相同。到目前为止还没有成功,负号每次都会被忽略。如何解决这个问题?

[编辑] 也已经尝试了伊格纳西奥的建议。我应该提到我必须使用Python2.5。


Tags: lambdakey字符串in功能for排序float
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', '']]
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']]

相关问题 更多 >