通常,mydict['fruits']
是字典,而您的fruit
将是键。mydict['fruits']
用fruit
like索引mydict['fruits'][fruit]
将导致获得单个项目,这显然是一个整数,而不是营养列表。为什么它是一个整数,是在您的代码中的其他地方引起的。
>>> for fruit in mydict['fruits']:
... print fruit, mydict['fruits'][fruit]
... for nutrition in mydict['fruits'][fruit]:
... print nutrition
...
kiwi 2
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: 'int' object is not iterable
更新
(令人困惑的是,问题发生了变化,因此我的答案需要更新。)
您可以使用isinstance(mydict['fruits'][fruit], list)
和变体。
或者更好的是,确保事物始终是一个列表;即,将类型检查逻辑适当地放在 Python 代码中,而不是放在模板代码中。因为实际上,为什么整数会被一个营养素?
另外,考虑更简单的迭代 dict 的方法(假设这在 mako 中有效):
>>> for fruit, nutritions in mydict['fruits'].items():
... if isinstance(nutritions, list):
... for nutrition in nutritions:
... print nutrition