class Person(object): def __init__(self, name, initial): self.name = name self.scores = [ initial ] def add(self, score): self.scores.append(score) def report(self): return "Hi I'm", self.name, "and my scores are", self.scores, "for a total of", self.total() def lessThan(self, other): return self.total() < other.total() def total(self): result = 0 for score in self.scores: result += int(score) return result def summary(filename): file = open(filename, "r") lines = file.readlines() file.close() d = {} for line in lines: (name, value) = line.split() if (d.has_key(name)): d[name].add(value) else: d[name] = Person(name, value) return d def report(data): objects = data.values() objects.sort(cmp=lambda x, y: y.total() - x.total()) for object in objects: print object.report() report(summary("data.txt"))