[英]How to check variable type in mako?
我在mako模板中有一個嵌套的dict,並且試圖遍歷它們以打印出它們的鍵。
%for fruit in mydict['fruits']:
${fruit}
% for nutrition in mydict['fruits'][fruit]:
${nutrition}
% endfor
%endfor
我遇到的問題是:“ mydict ['fruits'] [fruit]中的營養百分比:”
TypeError:“ int”對象不可迭代。
我如何檢查mydict ['fruits'] [fruit]是列表還是整數?
通常, mydict['fruits']
是一本字典,而您的fruit
將是鍵。 索引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代碼中,而不是模板代碼中。 因為實際上,為什么要用營養素來整數?
另外,請考慮迭代字典的更簡單方法(假設此方法在mako中有效):
>>> for fruit, nutritions in mydict['fruits'].items():
... if isinstance(nutritions, list):
... for nutrition in nutritions:
... print nutrition
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.