3 回答
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']]
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”,即可删除循环。
TA贡献1811条经验 获得超4个赞
我建议使用 Pandas 库来处理你的 csv。pandas.read_csv() 将读取您的 csv 文件,然后您可以使用函数 sort_values(by='name of the column') 对数据集进行排序。
添加回答
举报