我有一个字典列表,如下所示:
data = [{'student_id': '1','mark': 7.8,'course_id': '1',},
{'student_id': '1','mark': 34.8,'course_id': '1'},
{'student_id': '1','mark': 12.8,'course_id': '2'},
{'student_id': '1','mark': 39.0,'course_id': '2'},
{'student_id': '1','mark': 70.2,'course_id': '3'},
{'student_id': '2','mark': 7.8,'course_id': '1'},
{'student_id': '2','mark': 34.8,'course_id': '1'}]
我正在尝试按给定课程对每个student_id
的分数进行求和,例如学生1在课程1中的总分将是42.6等。理想情况下,我将创建一个新的干净列表,其中仅包含每个学生每门课程的总分。
我首先想到的方法是编写迭代来对每个学生和课程ID进行求和,如果与前一个项匹配,则将其相加:
for i in range(len(data)-1):
if data[i]['course_id'] == data[i+1]['course_id'] and data[i]['student_id'] == data[i+1]['student_id']:
data[i+1]['sum_mark'] = round(float(data[i]['mark'])+float(data[i+1]['mark']),3)
我认为这不是解决问题的好方法。