从python中的split中提取值

时间:2015-10-08 00:47:18

标签: python

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

2 个答案:

答案 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))