为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 csv 文件转换为列表以便按数字排序

如何将 csv 文件转换为列表以便按数字排序

ABOUTYOU 2023-03-01 15:16:10
enter image description here我有一个由 python 脚本制作的 .csv 文件,它存储一个分数(整数)和一个字符串名称,一旦转换为列表,我有没有办法对它进行数字排序?我也无法在项目进入 csv 文件之前对其进行排序,因为我需要在 csv 文件中存在预先存在的值,以便我可以按降序输出它们。如图所示,我已经尝试过 map 函数,但它说它需要是一个整数而不是一个列表。代码+错误信息
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

我可以给你这样的东西:


我创建的文件:


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']]



查看完整回答
反对 回复 2023-03-01
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

您正在尝试将 int() 映射到列表“scores”,而不是映射到您要转换为 int 的项目。


改变


scores = list(map(int, scores))


list.sort(scores, , reverse=True)

到:


scores = list(map(lambda l:[int(l[0]), l[1]], scores)

list.sort(scores, key=lambda l:l[0], reverse=True)

它应该工作。


除此之外,创建“分数”的循环是不必要的,因为您已经将 csv 转换为行中的列表:


csv = list(csv.reader(open("HighScores.csv")))

只需将变量名从“csv”更改为“scores”,即可删除循环。


查看完整回答
反对 回复 2023-03-01
?
波斯汪

TA贡献1811条经验 获得超4个赞

我建议使用 Pandas 库来处理你的 csv。pandas.read_csv() 将读取您的 csv 文件,然后您可以使用函数 sort_values(by='name of the column') 对数据集进行排序。



查看完整回答
反对 回复 2023-03-01
  • 3 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信