Establecer elementos de dictado de Python de forma recursiva, cuando se le da una clave compuesta 'foo.bar.baz'
Me gustaría lograr lo siguiente:
foodict['foo.bar.baz'] = 'foo'
{
'foo': {
'bar': {
'baz': 'foo'
}
}
}
}
... creando claves recursivamente.
Después de rascarme la cabeza por un tiempo, se me ocurrió esto:
class Config(dict):
def __init__(self, *args, **kwargs):
self.super = super(Config, self)
self.update(*args, **kwargs)
def __setitem__(self, keys, value):
keys = keys.split('.')
keys.reverse()
config = Config()
for i, k in enumerate(keys):
if i == 0:
config = Config(**{ k: value })
else:
config = Config(**{ k: config })
self.super.update(config)