如何在python中使用str.format()和字典?

时间:2011-06-03 16:05:20

标签: python dictionary

这段代码有什么问题?

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

>>> KeyError: 'fruit'

3 个答案:

答案 0 :(得分:29)

应该是

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

请注意**format()不接受单个字典,而是接受关键字参数。

答案 1 :(得分:7)

自Python 3.2以来有''.format_map() function

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

优点是它接受任何映射,例如,具有__getitem__方法的类动态生成值,或collections.defaultdict允许您使用不存在的键。

可以在旧版本上进行模拟:

from string import Formatter

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

答案 2 :(得分:0)

您也可以使用以下代码:

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

如果您想了解有关格式方法使用的更多信息:http://docs.python.org/library/string.html#formatspec