Python排序数字串

时间:2017-06-26 12:53:42

标签: python list sorting

我有一个小问题,特别是我想要做的就是排序这种列表

['520 0', '30000 1', '14000 2', '26273 3', '3829 4', '11776 5', '6947 6', '499 7',] 

在第一次出现的号码之后。当我尝试使用sorted方法时,我得不到正确的结果,而且我不想更改数据类型(因为以后的方法)。我想用它们的代数值对字符串进行排序。

有一种简单的方法吗?

3 个答案:

答案 0 :(得分:0)

您可以尝试:

my_list = ['520 0', '30000 1', '14000 2', '26273 3', '3829 4', '11776 5', '6947 6', '499 7']

my_list.sort(key = lambda x: int(x.split()[0])) 

答案 1 :(得分:0)

A =  ['520 0', '30000 1', '14000 2', '26273 3', '3829 4', '11776 5', '6947 6', '499 7'] 
print sorted(A, key=lambda x:int(x.split()[0]))
# ['499 7', '520 0', '3829 4', '6947 6', '11776 5', '14000 2', '26273 3', '30000 1']

您要做的是natural sorting。您可以使用sorted()函数的key参数执行此操作。

答案 2 :(得分:0)

我不能正确理解您希望如何对列表进行排序,但我认为您可以解决将key函数传递给sorted函数的问题。

例如,如果要对w.r.t进行排序。第一个数字,你应该像

那样
sorted(l, key=lambda s: int(s.split(' ')[0]))