Before talking about format_map(). Let's see how str.format(**mapping) works for Python Dictionaries.
point = {'x':4,'y':-5}
print('{x} {y}'.format(**point))
Output
4 -5
Learn more on, how to format strings in Python?
The format_map(mapping) is similar to str.format(**mapping) method.
The only difference is that str.format(**mapping) copies the dict whereas str.format_map(mapping) makes a new dictionary during method call. This can be useful if you are working with a dict subclass.
The syntax of format_map() is
str.format_map(mapping)
format_map Parameter
format_map() takes a single argument mapping(dictionary).
Return Value from format_map()
format_map() formats the given string and returns it.
Example 1: How format_map() works?
point = {'x':4,'y':-5}
print('{x} {y}'.format_map(point))
point = {'x':4,'y':-5, 'z': 0}
print('{x} {y} {z}'.format_map(point))
Output
4 -5 4 -5 0
Example 2: How format_map() works with dict subclass?
class Coordinate(dict):
def __missing__(self, key):
return key
print('({x}, {y})'.format_map(Coordinate(x='6')))
print('({x}, {y})'.format_map(Coordinate(y='5')))
print('({x}, {y})'.format_map(Coordinate(x='6', y='5')))
Output
(6, y) (x, 5) (6, 5)
format_map(mapping) is more flexible than format(**mapping) as you can have missing keys.
Also Read: