<p>嵌套词典在未来将导致一个痛苦的世界。我强烈建议学习面向对象编程和<code>class</code>es。下面是一个不工作但方向正确的例子。在</p>
<pre><code>class Assignment(dict):
'''This inherits from a dict, student will be the key, grade as the score'''
def __init__(self, name, max_score):
self.name = name
self.max_score = max_score
self.grades = {} # this will be used to store students and grades.
def __getitem__(self, student):
# we're overriding getitem, because the default is 0 if a student doesn't turn in their work
if student in self:
return dict.__getitem__(self, student)
return 0.0
class GradeBook(dict):
'''A gradebook is a dict of assignments'''
def get_max_score(self):
return sum(assignment.max_score for assignment in self.values())
def get_percentage(self, student):
return 100.0 * sum(assignment[student] for assignment in self.values()) / self.get_max_score()
class Course(object):
def __init__(self, name, time, teacher, students):
self.name = name
self.time = time # can teach multiple courses with the same name, but not at the same time
self.teacher = teacher
self.students = students
self.grade_book = GradeBook()
def add_assignment(self, assignemnt):
self.grade_book.append(assignment)
class Person(object):
def __init__(self, first, last):
self.first = first
self.last = last
def __repr__(self):
return '<{} {} {}>'.format(self.__class__.__name__, self.first, self.last)
class Student(Person):
'''A student is a person...'''
class Teacher(Person):
'''A teacher is a person...'''
</code></pre>