self._total += v
self._count += 1

def __delitem__(self, k):
    v = self[k]
dict.__delitem__(self, k)
self._total -= v
self._count -= 1

def average(self):
    if self._count:
        return self._total / self._count
a = AvgDict()
assert a.average() is None
a[1] = 1
assert a.average() == 1
a[2] = 10
assert a.average() == 5.5
assert a[2] == 10
a[1] = 5
assert a.average() == 7.5
del a[1]
assert a.average() == 10
Python – самый быстрый способ найти среднее значение по всему словарю каждый раз, когда он изменяется?