我已经能够使用函数将csv文件转换为列表格式。通过这样做,我能够为一个类号分配一个名称,然后再增加3个号码,例如:
在csv文件中:
Hussain 1 7 8 0
Alexandra 1 0 0 2
成为:
['Alexandra', 2],['Hussain', 8]
由于排序方法按字母顺序询问姓名和人的最高分。我使用元组来完成上面的代码,并希望继续使用元组。 现在我希望能够对它进行排序,使其成为最高的平均值,例如,平均值的排序方法将导致:
[Hussain, 1.66666666667],[Alexandra, 0.6666666666]
这些数字是我所期望的,因为它们是csv文件中最后三个数字的平均值,因为这里忽略了第二列。由于侯赛因的平均成绩最高,他排在第一位。我将不胜感激。
我想做的是以下内容:
我希望能够按照最高平均值到最低的顺序打印出所有学生。由于侯赛因的平均分为1.6,所以他首先打印出来然后打印出亚历山德拉,因为她的平均分数较低。这两个学生来自同一个类(显示在csv文件的第二列),当用户选择要排序的类1时,将打印它们。
TIA
答案 0 :(得分:1)
假设你有一个类1的列表,如:
class1 = [['Alexandra', 1, 0, 0, 2], ['Hussain', 1, 7, 8, 0]]
然后根据列表
中的第二个元素对此进行排序##this is class number 1 and you find class 1 people in second index of list by i[1] == 1(class number)
avg_list = [[i[0], float(sum(i[2:]))/len(i[2:])] for i in class1 if i[1] == 1 ]
dd = sorted(avg_list, key=lambda x: x[1])
dd.reverse()
print dd
输出:
[['Hussain', 5.0], ['Alexandra', 0.6666666666666666]]
答案 1 :(得分:0)
在python的sort函数中使用key函数。在这里阅读: https://docs.python.org/3/howto/sorting.html