如何使用sorted()函数对Python 3中的CSV文件中的数据进行排序?

时间:2019-04-13 15:22:57

标签: python sorting

我正在尝试对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']

显然,它仅按每个字符串中的第一个单词排序,这很奇怪。如何解决呢?

5 个答案:

答案 0 :(得分:1)

该列表中的元素是字符串,因此按字典顺序对其进行排序。如果要按它们的数值对其进行排序,则可以使用自定义排序键:

sorted(list_all, key = lambda x : float(x))

编辑:
正如aws_apprentice所评论的那样,您可以将一个函数作为排序键,并使此调用更加简洁:

sorted(list_all, key = float)

答案 1 :(得分:0)

您正在尝试对str类型进行排序,而不是intfloat

>>> 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]