def __getitem__(self, key): try: return OrderedDict.__getitem__(self, key) except KeyError: self[key] = ExpandingDict() return OrderedDict.__getitem__(self, key)