def __getitem__(self, key): if '.' not in key: return dict.__getitem__(self, key) # recursively get return dget(self, key)
#!/usr/bin/env python """ 'Dotted' dictionary access (similar to pymongo sub-document addressing) With a dict d, d = {'a': {'b': 1}} Normally, to access 'b's value you would run d['a']['b'] which can be cumbersome for large document heirarchies. These utilities are meant to allow for access like this dget(d, 'a.b') """ from ops import dget, dset, ddel class DDict(dict): """ Allow getting, setting and deleting of nested dictionaries like those returned from a MongoDB using a '.' notation. Example ------- d = DotAddressed({'a': {'b': {'c': 1}}}) d['a.b.c'] # 1 del d['a.b.c'] # {'a': {'b': {}}}