Разница между форматом (**locals()) и f-строкой при использовании переменной в качестве ключа для словарейPython

Программы на Python
Anonymous
Разница между форматом (**locals()) и f-строкой при использовании переменной в качестве ключа для словарей

Сообщение Anonymous »

У меня есть строка templ с переменной частью, которую мне нужно преобразовать с помощью локальных переменных. Переменная часть строки имеет словарь cur_cols_dct, из которого я хочу получить одно значение. Ключ словаря также является переменной: col

Код: Выделить всё

templ = "COMMENT IS '{cur_cols_dct[col]}'" # string with variable part
cur_cols_dct = {'art_id':'ID of article'}  # dictionary
col = 'art_id'                             # variable for dictionary key
Мне нужно получить строку с одним значением из словаря:

Код: Выделить всё

COMMENT IS 'ID of article'
Для этой цели я могу использовать f-строку, и она работает:

Код: Выделить всё

print (f"COMMENT IS '{cur_cols_dct[col]}'")
Но когда я пытаюсь использовать format(locals()), это не работает, поскольку Python не может распознать, что «col» — это не литерал, а переменная. :

Код: Выделить всё

print(templ.format(**locals()))
Я получаю сообщение об ошибке: KeyError: 'col'
Но в этом случае я не могу использовать f-строку, потому что я определите templ, прежде чем я получу переменные cur_cols_dct и col.
Есть ли способ получить значение из словаря, когда и словарь, и значение ключа являются переменными используя формат(**locals())? Или что можно использовать вместо формата?

Подробнее здесь: https://stackoverflow.com/questions/786 ... -as-key-fo

Вернуться в «Python»