Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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
Python 如何将csv文件转换为列表以进行数字排序_Python_Python 3.x - Fatal编程技术网

Python 如何将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(按列的名称)对数

我有一个由python脚本生成的.csv文件,其中存储了一个分数(整数)和一个字符串名称,是否有一种方法可以在转换为列表后对其进行数字排序?我也不能在项目进入csv文件之前对其进行排序,因为我需要csv文件中有预先存在的值,以便我可以按降序输出它们。如图所示,我尝试了map函数,但它说它需要是一个整数,而不是一个列表。

我建议使用Pandas library来播放您的csv。
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")))