На stackexachange предлагают делать через функцию - в словаре в значение ключа для каждой переменной своя функция, которая просто возвращает переменную. Обращаться к значению в словаре нужно будет с добавлением () после
def ret_a():
return a
a='xxx'
ret_a()
Out[161]: 'xxx'
a='zzz'
ret_a()
Out[163]: 'zzz'
d={'a':ret_a}
d['a']()
Out[164]: 'zzz'
a='bbb'
d['a']()
Out[166]: 'bbb'
Если сделать просто универсальную функцию def f(x): return(x), то сама она будет корректно возвращать текущее значение переменной, но через словарь значение изменяться не будет:
def ret(a):
return(a)
b=1000
ret(b)
Out[175]: 1000
d2={'a':ret(b)}
d2
Out[180]: {'a': 1000}
b=9999
ret(b)
Out[182]: 9999
d2
Out[183]: {'a': 1000}