ric*_*lla 0 python dictionary exception
我很好奇为什么会这样.我使用Mako模板迭代一个元组,其中包含许多字典,而这些字典又包含链接信息:
links = (
{
'path' : request.route_url('home'),
'text' : 'Home'
},
{
'path' : "http://www.microsoft.com",
'text' : "Microsoft"
}
)
Run Code Online (Sandbox Code Playgroud)
如果我将上述内容发送到视图,一切都按预期工作,将显示链接.如果我删除第二个链接但是:
links = (
{
'path' : request.route_url('home'),
'text' : 'Home'
}
)
Run Code Online (Sandbox Code Playgroud)
我得到一个例外: TypeError: string indices must be integers, not str
如果我在字典结束后放一个逗号,事情就会重新开始.谁能解释一下发生了什么?
编辑 Mako模板片段
<nav>
% for link in links:
<a href="${link['path']}">${link['text']}</a>
% endfor
</nav>
Run Code Online (Sandbox Code Playgroud)
如果我在字典结束后放一个逗号,事情就会重新开始.谁能解释一下发生了什么?
该逗号使得元组.没有它你只需要在括号中有一个值.
x = ({}) # brackets around a dict
x = {}, # a 1-tuple
x = ({},) # a 1-tuple in brackets
Run Code Online (Sandbox Code Playgroud)
通常看起来括号是元组的符号,因为它们经常出现在一起.这只是因为出于语法原因,在编写元组时经常需要括号.
当你写作时,links = ({ ... })你只有一本字典,而不是一个元组.Python循环遍历它的键,因此每个link都是一个字符串,您尝试使用另一个字符串进行索引,从而导致异常.
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |