amux
@amux
whata.ninja

Как правильно получить переменную по ссылке?

В опциях приходит путь до переменной относительно точки входа:
Как получить объект и поменять его по ссылке? чтобы не придумывать велосипедов.

entry = self.companies

for path in options['path']: # options['path'] == ['up', 'middle', 'down']
  entry = entry[path] # Нужно получить объект: self.companies['up']['middle']['down'] и изменить его

entry = options['value']
  • Вопрос задан
  • 119 просмотров
Решения вопроса 2
у вас есть вложенный объект и путь к нему, надо заменить в последнем вложенным объекте значение, можно сделать так
d = {1:{2:{3:{4:{5:0}}}}}
b = [1,2,3,4,5]
c = reduce(lambda d1, x: d1.get(x), b[:-1], d)
c
c[b[-1]] = 5
d
{1: {2: {3: {4: {5: 5}}}}}
Ответ написан
amux
@amux Автор вопроса
whata.ninja
Навелосипедил такое:

entry = self.companies

entries = {}
for index, path in enumerate(options['path']): # options['path'] == ['up', 'middle', 'down']
  if index == 0:
    entries[index] = entry[path]
  else: 
    entries[index] = entries[index - 1][path]

path_length = len(options['path'])
entries[path_length - 2][options['path'][path_length - 1]] = options['value']


Есть ли еще какие-то варианты?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Сбер Санкт-Петербург
от 100 000 до 100 000 ₽
Ovision Санкт-Петербург
от 100 000 до 300 000 ₽
10 мая 2021, в 04:00
1400 руб./в час
10 мая 2021, в 03:06
120000 руб./за проект
10 мая 2021, в 03:04
40000 руб./за проект