id, name, assignment#, grade
[1, 'james', '1,', 18.0]
[2, 'alice', '1,', 19.0]
[5, 'jorgen', '1,', 19.8]
[1, 'james', '2,', 19.5]
[2, 'alice', '2,', 22.75]
[3, 'kevin', '2,', 24.75]
[4, 'george', '2,', 23.5]
[5, 'jorgen', '2,', 12.5]
[3, 'kevin', '1,', 15.6]
[4, 'george', '1,', 18.4]
[3, 'kevin', '4,', 18.0]
[4, 'george', '4,', 28.5]
[5, 'jorgen', '4,', 7.5]
[1, 'james', '3,', 21.75]
[2, 'alice', '3,', 25.0]
[3, 'kevin', '3,', 21.25]
[4, 'george', '3,', 18.75]
[5, 'jorgen', '3,', 11.5]
[1, 'james', '4,', 29.4]
[2, 'alice', '4,', 29.4]
这是我的分割数据,我正在尝试添加成绩和输出(id,name,grade)。我怎样才能做到这一点?我应该输出
1, james: 88.65
2, alice: 96.15
3, kevin: 79.6
4, george: 89.15
5, jorgen: 51.3
答案 0 :(得分:2)
假设它是一个矩阵:
M = [[1, 'james', '1,', 18.0],
[2, 'alice', '1,', 19.0],
[5, 'jorgen', '1,', 19.8],
[1, 'james', '2,', 19.5],
[2, 'alice', '2,', 22.75],
[3, 'kevin', '2,', 24.75],
[4, 'george', '2,', 23.5],
[5, 'jorgen', '2,', 12.5],
[3, 'kevin', '1,', 15.6],
[4, 'george', '1,', 18.4],
[3, 'kevin', '4,', 18.0],
[4, 'george', '4,', 28.5],
[5, 'jorgen', '4,', 7.5],
[1, 'james', '3,', 21.75],
[2, 'alice', '3,', 25.0],
[3, 'kevin', '3,', 21.25],
[4, 'george', '3,', 18.75],
[5, 'jorgen', '3,', 11.5],
[1, 'james', '4,', 29.4],
[2, 'alice', '4,', 29.4]]
grades_for_james =sum([row[3] for row in M if row[1]=='james' ])
答案 1 :(得分:0)
使用defaultdict(float)
累积成绩:
from collections import defaultdict
grades = defaultdict(float)
for id, name, assignment, grade in data:
grades[id, name] += grade
# Now output (in order by id to be nice)
for id_name, total in sorted(id_grades.items()):
id, name = id_name
print('%d, %s: %.2f' % (id, name, total))