对具有混合数值的列表进行排序

时间:2011-04-09 14:40:50

标签: python list sorting numbers

场景:包含具有各种值的列表记录“行”的列表

问题:List.sort没有考虑数值,所以值最终到处都是

即在80之后出现在列表中

我尝试过使用

list.sort(key=operator.itemgetter[index])

并做了

list.sort(lambda x,y:int(x[index])<int(y[index])) 

无济于事。

2 个答案:

答案 0 :(得分:3)

使用转换后的数字作为密钥。

L.sort(key=lambda x: int(x[index]))

答案 1 :(得分:2)

你在正确的轨道上,但是operator.itemgetter是一个函数,所以语法是:

list.sort(key=operator.itemgetter(index))

或者,使用lambda:

list.sort(key=lambda x: x[index])

key 参数是要走的路, cmp 参数已在Python 3中删除。如果你想要使用它,你应该使用 cmp()内置函数来实现比较器:

list.sort(cmp=lambda x, y: cmp(x[index], y[index]))

另请参阅:http://wiki.python.org/moin/HowTo/Sorting/