cool things you can do with dict

alex goretoy aleksandr.goretoy at gmail.com
Tue Mar 17 04:40:46 CET 2009


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."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20090316/5bc54839/attachment.html>


More information about the Python-list mailing list