python - 我如何在 python 中对 csv 文件中的数据进行数字排序

标签 python list sorting csv numerical

我正在编写一个程序,该程序从 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/

相关文章:

python - 替换2个字符串python之间的所有文本

list - 非空列表comonad

performance - 检测长列表中出现的对的算法

java - 在Java中按升序对文件进行排序

c# - 按指定顺序对字符串进行排序

c++ - 内存映射和排序文件后字节下落不明

python - 将变量与 Python 中的列表成员匹配?

javascript - 提取通过flask动态生成的checkbox的值

python - Cython:通过引用传递

list - Dart List 中的 firstWhere() 和 indexWhere() 有什么区别