I though this was cool so I'd post about it, its one of the recipes class peanutsdict(dict): def __init__(self,default=None): dict.__init__(self) self.default = default
def __getitem__(self,key): if key in self: return dict.__getitem__(self,key) else: return self.default def get(self, key, *args): if not args: args = (self.default,) return dict.get(self, key, *args) def merge(self, other): for key in other: if key not in self: self[key] = other[key] a=peanutsdict() a.b=peanutsdict() a.b.c=peanutsdict() a.x=1 a.b.y=2 a.b.c.z=3 >>> print a {} >>> print a.__dict__ {'default': None, 'x': 1, 'b': {}} >>> print a.b.__dict__ {'default': None, 'y': 2, 'c': {}} >>> print a.b.c.__dict__ {'default': None, 'z': 3} >>> print a.b.c.z 3 >>> print a.b.c {} >>> a.b.b=peanutsdict() >>> class pdict(dict): pass ... >>> a.b.b.a=pdict() >>> a.b.b {} >>> a.b.b.__dict__ {'default': None, 'a': {}} >>> a.b.b.__dict__['a'] {} >>> a.b.b.__dict__['a'].x=4 >>> a.b.b.__dict__['a'].x 4 >>> a.b.b.a.x 4 Anyone else know anymore cool pieces of code? -Alex Goretoy http://www.goretoy.com Jean Anouilh - "What you get free costs too much."
-- http://mail.python.org/mailman/listinfo/python-list