簡體   English   中英

如何在mako中檢查變量類型?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM