Разница между форматом (**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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ContextManager получает доступ к locals() вызова с помощью блока
    Anonymous » » в форуме Python
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • Измените существующую переменную в `locals()` или `frame.f_locals`
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • AttributeError: невозможно выбрать локальный объект «Flask.__init__..» из-за многопроцессорности
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между строкой и строкой в ​​C#?
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между строкой и строкой в ​​C#?
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

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