我有一个CSV文件,如下所示:
Hussain 1 0 0 3
我设法将所有列表创建为行:生成的列表如下:
['Hussain', '1', '0', '0', '3']
我希望能够对它们进行排序,以便按字母顺序打印名称以及每个人的最高分:另一个注意事项是第1个数字将被排除,因为这是学生的课程1,2和3中的数字,而不是他们得分的一部分。需要打印特定类中的人员,因为用户将决定他们要分类的类:
如果用户说第1类,程序应该打印:
Hussain:3
我很感激任何帮助,因为我一直在努力解决这部分代码,尽管我已经在很长一段时间内一直在努力。谢谢
答案 0 :(得分:0)
尝试这样的事情:
tuples = [['Hussain', '1', '0', '0', '3'], ['Bon', '2', '1', '2', '3'], ['Alice', '1', '5', '2', '3'], ['Josh', '3', '1', '7', '10'], ['Jack', '2', '0', '8', '9'], ['Zyra', '3', '5', '1', '6']]
class_to_sort = 1
# reduce to classes that are requested by user
tuples = filter(lambda tuple: int(tuple[1]) == class_to_sort, tuples)
# sort the tuples
tuples = sorted(tuples, key=lambda tuple: tuple[0])
# throw out second column and converts strings to integers
tuples = [[tuple[0]] + map(int, tuple[2:]) for tuple in tuples]
# throw out all integers that aren't the maximum per tuple
tuples = [[tuple[0]] + [max(tuple[1:])] for tuple in tuples]
print tuples
输出[名称,最高分数]列表,然后您可以随意使用:
[['Alice', 5], ['Hussain', 3]]