字符串格式方法。字典

时间:2015-02-09 17:23:59

标签: python python-3.3

我正在学习如何使用字符串format方法,而且我发现了一些我不理解的东西。当我这样做时:

>>> s = "My {comp[b]}"
>>> s.format(comp = {'a': 'laptop', 'b': 'desktop'})
'My desktop'

我得到了预期的结果。但是当我尝试从方法中定义字典时,只使用了里面的名字:

>>> comp = {'a': 'laptop', 'b': 'desktop'}
>>> s = "My {comp[b]}"
>>> s.format(comp)

我得到KeyError: 'comp'。为什么呢?

2 个答案:

答案 0 :(得分:5)

在第二个示例中,您没有命名要传递给format的参数。你的最后一行应该是:

>>> s.format(comp=comp)

答案 1 :(得分:2)

format区分位置和命名参数之间的使用。

通过在格式字符串中使用变量的名称,您需要提供具有该特定名称的命名参数。 在第一种情况下,你是因为你正在调用"".format(<name>=<var>),而在第二种情况下,你只是给出一个由comp字典填充的位置参数(位置0)。

如果您已阅读文档,则注意到格式可以通过以下方式使用位置参数:"Hello {0}!".format(<arg0>)

在第二种情况下,不是给出必需的名称参数comp,而是给出位置参数0。