Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用sorted()函数在Python 3中对CSV文件中的数据进行排序?_Python_Sorting - Fatal编程技术网

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

如何使用sorted()函数在Python 3中对CSV文件中的数据进行排序?,python,sorting,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'] 显然,它只按每个字符串中的第一个单词排序,这很奇怪。如何解

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

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

Python将引号或双引号内的任何内容解释为字符串类型。 所以你写的数字不是数字,只是文字

sorted()
然后,在字符串上,根据字符工作。 只需删除以下引用:

list_all = [10,2,113.2,200]
您正在尝试对str类型进行排序,而不是int或float

试试这个:

list_all = ["10","2","113.2","200"]
list_all.sort(key = float) 
print(list_all)

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

sorted(list_all, key = lambda x : float(x))
编辑: 正如aws_学徒所评论的,您只需传递一个函数作为排序键,并使此调用更简洁:

sorted(list_all, key = float)

这是因为它像字符串一样对内容进行排序,因为它们就是字符串,所以您可以使用排序参数键按它们的浮点表示对它们进行排序


为什么这么奇怪?提示:有没有办法告诉sorted使用每个的浮点表示法?@PythonNWB它肯定不是一个bug。尝试用浮点值而不是字符串值对列表进行排序,然后看看自己会发生什么。这就是字典排序的工作原理,它在sorted.sortedlist=sortedlist_all,key=lambda row:floatrow中不是一个bug。这适用于CSV文件。对于遇到此问题的任何人,它主要是由CSV文件中数据的字符串类型引起的。因此,通过将类型从转换为,问题得以解决。感谢大家的贡献不要假设OP想要的最终输出是floats/integer如果列表在csv文件中,如何删除引号并将其从字符串类型转换为数字?@PythonNWB从csv文件读取时,可以使用list_all.appendfloatrow[8]这会对列表进行排序,这是OP想要的吗?包括解释也无妨
sorted(list_all, key = float)
list_all = ["10","2","113.2","200"]
sortedlist = sorted(list_all, key=float)

print(sortedlist) # --> ['2', '10', '113.2', '200']