Вы можете просто зациклить путь, нарезанный до последнего элемента, и работать с объектом, используя setdefault()
для создания новых объектов по мере необходимости. После цикла у вас будет ссылка на последний объект, который вы можете использовать для установки значения:
data = {'personal_information': {'name' : {'first_name': 'Ashutosh'}}}
path_to_add = ['personal_information', 'address', 'state']
value = 'Delhi'
def add_to_dict(data, path, value):
found = data
for key in path[0:-1]:
found = found.setdefault(key, {})
found[path[-1]] = value
add_to_dict(data, path_to_add, value)
print(data)
Результат:
{'personal_information': {'name': {'first_name': 'Ashutosh'}, 'address': {'state': 'Delhi'}}}