Как в Python3 подстановить строковое значение одной переменной для обращения к другой переменной (списка)?

Добрый день. Прохожу книгу Наташи Самойленко "Python для сетевых инженеров". Завис на задании 5.3. Суть сводится к следующему. Есть два списка и есть текстовое значение переменной которое соответствует фрагменту имени переменной одного из списков. Например:

trunk_port = [ 'a' ]
access_port = [ 'b' ]

param = 'access'


Как я могу отправить на поток стандартного вывода содержимое списка access_port путём подстановки текстового значения переменное param в одну из переменных списка?
  • Вопрос задан
  • 813 просмотров
Решения вопроса 1
@o5a
Если речь про то, чтобы вывести значение переменной, совпадающей по названию со строкой, то можно опросить locals() например так:

trunk_port = [ 'a' ]
access_port = [ 'b' ]
param = 'access'
print(*[value for var, value in locals().items() if param in var])


Но я глянул это задание в книге, там явно написано, что требуется проще, через if, т.е. примерно так:

interface = input('....')
if interface == 'access':
    # печатаем содержимое access_template в цикле
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
solotony
@solotony
покоряю пик Балмера
все переменные в питоне являются элементами словаря например globals()

5d8b49c4571f2098648241.png

>>> x_port = 5
>>> y_port = 6
>>>
>>> a = 'x'
>>>
>>> globals()[a+'_port']
5
>>> globals()[a+'_port']
5
>>> a = 'y'
>>> globals()[a+'_port']
6
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы