我正在学习如何使用字符串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'
。为什么呢?
答案 0 :(得分:5)
在第二个示例中,您没有命名要传递给format
的参数。你的最后一行应该是:
>>> s.format(comp=comp)
答案 1 :(得分:2)
format
区分位置和命名参数之间的使用。
通过在格式字符串中使用变量的名称,您需要提供具有该特定名称的命名参数。
在第一种情况下,你是因为你正在调用"".format(<name>=<var>)
,而在第二种情况下,你只是给出一个由comp
字典填充的位置参数(位置0)。
如果您已阅读文档,则注意到格式可以通过以下方式使用位置参数:"Hello {0}!".format(<arg0>)
。
在第二种情况下,不是给出必需的名称参数comp
,而是给出位置参数0。