class Statistic(object): def __init__(self, name, initial_value): self.name = name self.min = float(initial_value) self.max = float(initial_value) self.ave = float(initial_value) self.count = 1 def add_value(self, value): if value < self.min: self.min = value if value > self.max: self.max = value self.count += 1 self.ave = (((self.ave * (self.count - 1)) + value) / self.count) def get_value(self): return (self.name, (self.min, self.max, self.ave, self.count)) class Statistics(object): def __init__(self): self.data = dict() def add_value(self, name, value): if name not in self.data: self.data[name] = Statistic(name, value) else: self.data[name].add_value(value) def display(self): return dict([value.get_value() for value in list(self.data.values())])