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