How to sort a list of strings numerically?

前端 未结 14 2377
你的背包
你的背包 2020-11-22 03:43

I know that this sounds trivial but I did not realize that the sort() function of Python was weird. I have a list of \"numbers\" that are actually in string for

14条回答
  •  一个人的身影
    2020-11-22 04:14

    You haven't actually converted your strings to ints. Or rather, you did, but then you didn't do anything with the results. What you want is:

    list1 = ["1","10","3","22","23","4","2","200"]
    list1 = [int(x) for x in list1]
    list1.sort()
    

    If for some reason you need to keep strings instead of ints (usually a bad idea, but maybe you need to preserve leading zeros or something), you can use a key function. sort takes a named parameter, key, which is a function that is called on each element before it is compared. The key function's return values are compared instead of comparing the list elements directly:

    list1 = ["1","10","3","22","23","4","2","200"]
    # call int(x) on each element before comparing it
    list1.sort(key=int)
    

提交回复
热议问题