magical expanding hash

James Stroud jstroud at ucla.edu
Tue Jan 17 07:32:31 CET 2006


braver wrote:
> I need a magical expanding hash with the following properties:
> 
> * it creates all intermediate keys
> 
> meh['foo']['bar] = 1
> 
> -- works even if meh['foo'] didn't exist before
> 
> * allows pushing new elements to leaves which are arrays
> 
> meh['foo']['list] << elem1
> meh['foo']['list] << elem2
> 
> * allows incrementing numeric leaves
> 
> meh['foo']['count'] += 7
> 
> * serializable
> 
> I have such a class in ruby.  Can python do that?
> 


Is this too magical?


class meh(dict):
   def __getitem__(self, item):
     if self.has_key(item):
       return dict.__getitem__(self, item)
     else:
       anitem = meh()
       dict.__setitem__(self, item, anitem)
     return anitem


m = meh()

m['bob']['carol']['ted'] = 2

print m['bob']['carol']['ted']



More information about the Python-list mailing list