from collections import defaultdict
class BySubjectGradebook:
def __init__(self):
self._grades = {} # 외부 dict
def add_student(self, name):
self._grades[name] = defaultdict(list) # 내부 dict
def report_grade(self, name, subject, grade):
by_subject = self._grades[name]
grade_list = by_subject[subject]
grade_list.append(grade)
def average_grade(self, name):
by_subject = self._grades[name]
total, count = 0, 0
for grades in by_subject.values():
total += sum(grades)
count += len(grades)
return total / count