字符串格式化方法。词典

String format method. Dictionaries

我正在学习如何使用字符串 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'。为什么?

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

>>> s.format(comp=comp)

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

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

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

在第二种情况下,您没有给出所需的名称参数 comp,而是给出了位置参数 0.