Python 如何将csv文件转换为列表以进行数字排序
我有一个由python脚本生成的.csv文件,其中存储了一个分数(整数)和一个字符串名称,是否有一种方法可以在转换为列表后对其进行数字排序?我也不能在项目进入csv文件之前对其进行排序,因为我需要csv文件中有预先存在的值,以便我可以按降序输出它们。如图所示,我尝试了map函数,但它说它需要是一个整数,而不是一个列表。我建议使用Pandas library来播放您的csv。Python 如何将csv文件转换为列表以进行数字排序,python,python-3.x,Python,Python 3.x,我有一个由python脚本生成的.csv文件,其中存储了一个分数(整数)和一个字符串名称,是否有一种方法可以在转换为列表后对其进行数字排序?我也不能在项目进入csv文件之前对其进行排序,因为我需要csv文件中有预先存在的值,以便我可以按降序输出它们。如图所示,我尝试了map函数,但它说它需要是一个整数,而不是一个列表。我建议使用Pandas library来播放您的csv。 pandas.read\u csv()将读取您的csv文件,然后您可以使用函数sort\u values(按列的名称)对数
pandas.read\u csv()将读取您的csv文件,然后您可以使用函数sort\u values(按列的名称)对数据集进行排序。我可以给您提供如下内容: 我创建的文件:
1,hello
12,idontknow
33,foo
3,bar
0,fooo
7,baaar
代码如下:
import csv
def csv_sort(file_path):
opened_file = open(file_path, 'r')
data = list(csv.reader(opened_file, delimiter = ','))
return sorted(data, key = lambda x: int(x[0]))
if __name__ == '__main__':
results = csv_sort('path_to_your_file')
print(results)
结果:
[['0', 'fooo'], ['1', 'hello'], ['3', 'bar'], ['7', 'baaar'], ['12', 'idontknow'], ['33', 'foo']]
您正在尝试将int()映射到列表“分数”,而不是要转换为int的项
改变
scores = list(map(int, scores))
list.sort(scores, , reverse=True)
致:
它应该会起作用
除此之外,创建“分数”的循环是不必要的,因为您已经将csv转换为行中的列表:
csv = list(csv.reader(open("HighScores.csv")))
只需将变量名从“csv”更改为“scores”,您就可以删除循环。我为您感到抱歉,但本网站有关于如何提问的规则。作为一个新用户,你真的应该阅读。具体来说,你应该给你的代码作为文本,这样它可以被复制,和一个样本输入,这样我们可以复制。请你的问题,包括代码和错误的问题本身。不要依赖他人可以访问的外部链接,也不要依赖他人从图片中转录代码来测试它。请参阅如何最好地帮助我们帮助您的页面。请注意,您的文件包含获奖者分数和姓名。执行
scores.append(row)
同时追加scores和name,并且map(int,scores)
同样尝试将每个scores和name转换为整数。谢谢你,我稍微修改了它,因为我不想使用子程序,但代码本身是基于你的。对不起,如果我不能恰当地提问,意味着你必须转录任何代码。
csv = list(csv.reader(open("HighScores.csv")))