Форматирование строк в словаре Python, таком как Ruby

В Ruby вы можете сделать что-то вроде:

a = 4
b = 5
match = {}
match["#{a}-#{b}"] = 0

Тогда, если я скажу:

match["4-5"]

Результат 0.

Могу ли я сделать что-то подобное в словаре Python? Кажется, я не могу заставить форматирование строк работать со словарем.

РЕДАКТИРОВАТЬ:

С f-строками в Python 3+ теперь можно сделать что-то вроде:

match[f"{a}-{b}"] = 0

person ab15    schedule 22.01.2015    source источник
comment
Я думаю, что самое близкое, что вы можете получить, это использовать оператор формата: match["%d-%d" % (4, 5)] = 0.   -  person Phylogenesis    schedule 22.01.2015
comment
Это эквивалент Python, который я бы использовал.   -  person the Tin Man    schedule 22.01.2015


Ответы (1)


Проблема

  • Как сделать заполнители строковых переменных в стиле ruby ​​в python.

Решение

  • Python имеет множество вариантов интерполяции строковых переменных.
  • Among them, a couple prominent approaches:
    • str.format in python version 2.6 and above
    • f-строки в Python версии 3.6 и выше

Пример

  import pprint
  ## using python str.format
  match     = {}
  a = 4
  b = 5
  match["{a}-{b}".format(a=a,b=b)] = 0
  pprint.pprint(match)
  pass

  ## result
  {'4-5': 0}      

Смотрите также

person dreftymac    schedule 02.04.2019