Думаю автор хотел обращаться к структуре данных из вложенных словарей используя одну переменную.
В принципе это не сложно реализовать 2 функциями:
def GetVal(array,key):
result = array
for k in key.split("."): result = result[k]
return result
def SetVal(array,key,val):
def merge(a,b):
for k,v in b.items():
if k in a.keys() and isinstance(a[k],dict):
merge(a[k],v)
else:
a[k] = v
result = val
for k in key.split(".")[::-1]: result = {k:result}
merge(array,result)
return array
Первая функция рекурсивно присваивает значения, пока не закончатся ключи
Вторая функция строит структуру массива и выполняет рекурсивное слияние и присвоение элемента.
Протестируем работу:
>>> exampe = {'Building': {
'Flat': {
'Flat_1': {
'App_1': 3,
'App_2': 5},
'Flat_2': {
'App_3': 1,
'App_4': 3
}
}
}
}
>>> GetVal(exampe,"Building.Flat.Flat_2.App_4")
3
>>> SetVal(exampe,"Building.Flat.Flat_2.App_4",7)
{'Building': {'Flat': {'Flat_1': {'App_1': 3, 'App_2': 5}, 'Flat_2': {'App_3': 1, 'App_4': 7}}}}
>>> GetVal(exampe,"Building.Flat.Flat_2.App_4")
7
>>>