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

0 投票
2 回答
2038 浏览
提问于 2025-04-16 15:23

场景:有一个列表,里面包含了很多“行”,每行都是一些不同的值。

问题:使用列表的排序功能时,它没有考虑到数字的大小,所以这些值的顺序乱七八糟。

比如说,数字9竟然排在了80后面。

我尝试过使用

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

并且做了

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

但是都没有效果。

2 个回答

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/

3

把转换后的数字当作钥匙来用。

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

撰写回答