str.format_map()

Метод format_map() форматирует строку, подставляя значения из переданного отображения (например, словаря) по именованным placeholders. В отличие от str.format(**mapping), словарь не распаковывается — это позволяет использовать пользовательские классы-словари (например, с собственной реализацией __missing__).

Сигнатура

str.format_map(mapping)

Параметры

  • mapping — объект, поддерживающий доступ по ключу (dict или его подкласс, либо любой класс с методом __getitem__).

Возвращаемое значение

Новая строка (str) с подставленными значениями.

Примеры использования

Пример 1. Базовое использование со словарём.

data = {"name": "Arduino UNO", "price": 8500}
print("Товар: {name}, цена: {price} тг".format_map(data))
Товар: Arduino UNO, цена: 8500 тг

Пример 2. Несколько вхождений одного ключа.

info = {"board": "ESP32"}
tpl = "{board} — это {board}!"
print(tpl.format_map(info))
ESP32 — это ESP32!

Пример 3. Подкласс dict с __missing__.

Главное преимущество format_map() — возможность задать поведение для отсутствующих ключей:

class Default(dict):
    def __missing__(self, key):
        return "<нет>"

tpl = "Имя: {name}, статус: {status}"
print(tpl.format_map(Default(name="Иван")))
Имя: Иван, статус: <нет>

Пример 4. Параметры подключения устройства.

params = {"port": "COM3", "baud": 9600}
tpl = "Подключение к {port} на скорости {baud} бод"
print(tpl.format_map(params))
Подключение к COM3 на скорости 9600 бод

Пример 5. Разница с format(**dict).

При format(**d) словарь распаковывается в kwargs (только строковые ключи и копия), а format_map(d) работает с объектом напрямую:

d = {"x": 1, "y": 2}
print("{x}+{y}".format(**d))
print("{x}+{y}".format_map(d))
1+2
1+2

См. также

Примечание

Лицензия и источники

Техническое описание метода адаптировано из официальной документации Python (https://docs.python.org), доступной под Python Software Foundation License Version 2. Перевод на русский, примеры использования и пояснения — © AlashEd Wiki.