Python 当我尝试对包含数字数据的csv文件中的列进行排序时,它不';I don’我不能按我所期望的方式来分类

Python 当我尝试对包含数字数据的csv文件中的列进行排序时,它不';I don’我不能按我所期望的方式来分类,python,python-3.x,csv,sorting,Python,Python 3.x,Csv,Sorting,我正在尝试编写一个程序,询问用户希望按csv文件中的哪一列进行排序,并生成一个按请求列排序的新csv文件,其中一些列包含字符串,其他列包含整数,其他列包含浮点。当我尝试按包含整数或浮点数的列进行排序时,它不会按照我希望的方式进行排序。这几乎就像是在“按字母顺序”排列数字,如果这有意义的话 简而言之,我在尝试正确排序数字列时遇到问题 我正在尝试只导入csv模块 import csv user_input = input("What would you like to sort by? (Cou

我正在尝试编写一个程序,询问用户希望按csv文件中的哪一列进行排序,并生成一个按请求列排序的新csv文件,其中一些列包含字符串,其他列包含整数,其他列包含浮点。当我尝试按包含整数或浮点数的列进行排序时,它不会按照我希望的方式进行排序。这几乎就像是在“按字母顺序”排列数字,如果这有意义的话

简而言之,我在尝试正确排序数字列时遇到问题

我正在尝试只导入csv模块

import csv


user_input = input("What would you like to sort by? (Country,Name, GDPPC, Literacy, InfantMortality, Agriculture, Population, NetMigration)")


with open('Countries.csv', 'r', newline='') as input_file:
    csv_input = csv.DictReader(input_file)
    data = sorted(csv_input,reverse=True, key=lambda row: (row[user_input]))

with open('Countries_Sorted.csv', 'w') as output_file:
    csv_output = csv.DictWriter(output_file, fieldnames=csv_input.fieldnames)
    csv_output.writeheader()
    csv_output.writerows(data)


with open('Countries_Sorted.csv', 'r') as final_file:
    for line in final_file:
        print(line)
如果我尝试按人口排序,我会得到这样的结果

人口
99390000
9845000
9799000
9651000
9513000
92900
91700000
9157000
91510000
892145

当它应该生成这样的东西时

人口
1371000000
1311000000
321400000
257600000
207800000
188900000
182200000
161000000
144100000
127000000
根据csv.reader,当它解析你的文件时,我相信它会返回字符串对象,所以当你对它们进行排序时,你的数字实际上是用字符串表示的。您需要先将它们转换为整数/浮点数,才能将它们作为数字进行排序。

这是因为它是按字母顺序排序的,因为
csv
模块会以字符串形式返回数据,因此您需要自己手动将其转换为正确的数字类型。