我正在编写一个程序,该程序从 csv 文件中获取学生的分数,然后需要从最高分到最低分进行排序。 csv 文件如下所示:
乔希 12
约翰 6
弗雷德 8
哈利 7
我试过将这些项目放在这样的列表中:
Mylist=[]
csvfile = open (classname,'r')
reader = csv.reader(csvfile)
for row in reader:
Mylist.append(row)
然后反转列表,将数值放在最前面:
Mynewlist = []
for each in Mylist:
value2 = ''.join(each[0])
value1 = ''.join(each[1])
mynewlist.append(value1,value2)
运气不好,我得到了这个错误:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
main()
File "\\SRV-FILE3\ca231$\task 3\3.py", line 143, in main
value1 = ''.join(each[1])
IndexError: list index out of range
我使用 ''.join(each[1])
转换为字符串,然后以相反的顺序附加它们然后我计划使用 .sort()
按数字对它们进行排序,但我无法让它们附加到列表中。
有谁知道如何按数值对 csv 文件的内容进行排序?
最佳答案
我认为你把事情复杂化了。假设您将数据作为列表的列表:
data = [("josh", "12"), ("john", "6"), ("fred", "8"), ("harry", "7")]
这当然可以来自 CSV,这对排序无关紧要。您可以通过调用 sorted()
进行排序:
sorted(data, key = lambda x: int(x[1]))
lambda
是一个函数,它选择每个子列表的第二个元素作为键,即分数,并将其转换为数字进行排序。这打印:
[('john', '6'), ('harry', '7'), ('fred', '8'), ('josh', '12')]
关于python - 我如何在 python 中对 csv 文件中的数据进行数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33172203/