为什么在python中排序不起作用?

时间:2015-07-24 20:03:34

标签: python list sorting

code:
list=['1','85863','432','93','549834']
list.sort()
print (list)

Actual output:
>>> 
['1', '432', '549834', '85863', '93']
#why sort is not working
Expected output:
['1','93','432','83863','549834']

我也尝试了其他排序操作,但它们显示相同的输出。 当我试图从键盘输入读取列表时,他们只读取字符串而不是int请帮助我为什么?

5 个答案:

答案 0 :(得分:2)

  

当我尝试从键盘输入读取列表时,他们只读取字符串而不是int请帮助我为什么

如果x是字符串,只需使用int(x)转换为int

您正在排序字符串(文本),而不是像整数这样的数值

对于您的预期输出,您必须先转换为整数

my_list= ['1','85863','432','93','549834']
my_list = [int(x) for x in my_list]

现在您可以按数字排序,并获取整数列表

my_list.sort()

N.B。避免使用list作为变量名,它是内置的Python

答案 1 :(得分:2)

我认为您希望按总和进行排序以匹配您的预期输出:

l = ['1','85863','432','93','549834']

l.sort(key=lambda x: sum(map(int,x)))

print(l)
['1', '432', '93', '83863', '549834']

答案 2 :(得分:1)

您需要先将字符串转换为int。

list = [int(ele) for ele in list]
list.sort()
print list

答案 3 :(得分:0)

没有int:

lst = ['1','85863','432','93','549834']
lst.sort()
lst.sort(key=len)
print(lst)

这给:

['1', '93', '432', '85863', '549834']

如果你想要整数......

my_int = int(input())

答案 4 :(得分:0)

我简单地错过了将字符串转换为int的逻辑。默认的python输入将被视为字符串。所以,我们可以使用答案中提到的任何方法转换为字符串,然后sort()方法在int上成功地工作