import collections class __Helper(object): def __getitem__(self, ctor): return lambda: collections.defaultdict(lambda: ctor()) genericdefaultdict = __Helper() if __name__ == '__main__': a = genericdefaultdict[int]() a[1] += 1 print "a[1]=", a[1] b = genericdefaultdict[genericdefaultdict[int]]() b[1][2] += 12 print "b[1][2]=", b[1][2]