通常、mydict['fruits']
は辞書であり、あなたのfruit
意志が鍵になります。likeを使用してインデックスmydict['fruits']
を作成すると、単一の項目が取得されます。これは明らかに整数であり、栄養のリストではありません。それが整数である理由は、コードの別の場所で発生します。fruit
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