Wednesday, April 9, 2014

Python cache dictionary

class cachedict(dict):
    def __init__(self, factory):
        self.factory = factory

    def __missing__(self, key):
        value = self[key] = self.factory(key)
        return value
USAGE:
d = cachedict(lambda x: x ** 2)
print d[2]  # 4