我正在尝试对CSV文件中的以下数据进行排序:
list_all = ["10","2","113.2","200"]
听起来很简单,对吧? 因此,我使用以下代码对其进行了排序:
list_all = ["10","2","113.2","200"]
sortedlist = sorted(list_all)
print(sortedlist)
但是它不能正常工作。
这是我函数的输出。
['10', '113.2', '2', '200']
显然,它仅按每个字符串中的第一个单词排序,这很奇怪。如何解决呢?
答案 0 :(得分:1)
该列表中的元素是字符串,因此按字典顺序对其进行排序。如果要按它们的数值对其进行排序,则可以使用自定义排序键:
sorted(list_all, key = lambda x : float(x))
编辑:
正如aws_apprentice所评论的那样,您可以将一个函数作为排序键,并使此调用更加简洁:
sorted(list_all, key = float)
答案 1 :(得分:0)
您正在尝试对str
类型进行排序,而不是int
或float
。
>>> list_all = [10,2,113.2,200]
>>> sortedlist = sorted(list_all)
>>> print(sortedlist)
[2, 10, 113.2, 200]
答案 2 :(得分:0)
尝试一下:
list_all = ["10","2","113.2","200"]
list_all.sort(key = float)
print(list_all)
答案 3 :(得分:0)
这是因为它像strings
那样对内容进行排序(因为它们就是这样),因此您可以使用已排序参数float
按照它们的key
表示对它们进行排序。
list_all = ["10","2","113.2","200"]
sortedlist = sorted(list_all, key=float)
print(sortedlist) # --> ['2', '10', '113.2', '200']
答案 4 :(得分:-1)
Python会将引号'或双引号“中的任何内容解释为String类型。 所以你写的数字不是数字,只是单词!
sorted()
然后在字符串上按,根据字符起作用。 只需删除引号即可:
list_all = [10,2,113.2,200]