On Wed, Jun 16, 2010 at 4:43 AM, Thomas Lehmann <t.lehm...@rtsgroup.net> wrote: > Hi, > > I have seen a recipe which allows auto creation of missing values for > dictionaries. > However this recipe is not working for all. > > class AutoValueDict(dict): > def __makeitem__(self, key): > return self.setdefault(key, {}) > > def __getitem__(self, key): > return self.get(key, self.__makeitem__(key)) > > I would like to have a dictionary which ensures dictionaries as values > except when I'm assigning another: > > dict["abc"]["xyz"]["123"]["456"] = 123 > > How can I do this without many "if" and "else"?
Why not use defaultdict? from collections import defaultdict def recursive_defaultdict(): return defaultdict(recursive_defaultdict) my_dict = recursive_defaultdict() my_dict["abc"]["xyz"]["123"]["456"] = 123 Cheers, Ian -- http://mail.python.org/mailman/listinfo/python-list