How to use str.format() with a dictionary in python?

前端 未结 3 1502
小鲜肉
小鲜肉 2021-02-05 07:56

What is wrong in this piece of code?

dic = { \'fruit\': \'apple\', \'place\':\'table\' }
test = \"I have one {fruit} on the {place}.\".format(dic)
print(test)

&         


        
相关标签:
3条回答
  • 2021-02-05 08:23

    There is ''.format_map() function since Python 3.2:

    test = "I have one {fruit} on the {place}.".format_map(dic)
    

    The advantage is that it accepts any mapping e.g., a class with __getitem__ method that generates values dynamically or collections.defaultdict that allows you to use non-existent keys.

    It can be emulated on older versions:

    from string import Formatter
    
    test = Formatter().vformat("I have one {fruit} on the {place}.", (), dic)
    
    0 讨论(0)
  • 2021-02-05 08:28

    You can use the following code too:

    dic = { 'fruit': 'apple', 'place':'table' }
    print "I have one %(fruit)s on the %(place)s." % dic
    

    If you want to know more about format method use: http://docs.python.org/library/string.html#formatspec

    0 讨论(0)
  • 2021-02-05 08:43

    Should be

    test = "I have one {fruit} on the {place}.".format(**dic)
    

    Note the **. format() does not accept a single dictionary, but rather keyword arguments.

    0 讨论(0)
提交回复
热议问题