If you stored `GradeRow` just as a `dict` instead, then this code would just be:

    return [row.get(idx) for idx in range(ncomp)]