我使用Python 3測試,如果一本字典的值是非零所有()函數
我要檢查所有的嵌套字典我的測試值都是非0
所以在這裏是簡化的示例字典:
d = {'a': {'1990': 10, '1991': 0, '1992': 30},
'b': {'1990': 15, '1991': 40, '1992': 0}}
,我想測試,如果兩種類型的字典「一」和「b」的密鑰「1990」的值和「1991」不爲零
for i in d:
for k in range(2):
year = 1990
year = year + k
if all((d[i][str(year)]) != 0):
print(d[i])
所以它應該只返回b,因爲['1991'] = 0
但這是我第一次使用all()函數,我得到錯誤核心:TypeError:'bool'object是不是可迭代
錯誤是在如果所有()行
非常感謝你!
的[如何Python的任何可能的複製和所有功能的工作?](http://stackoverflow.com/questions/19389490/how-do-pythons-any-and-all-functions-work) –
在我發佈我的問題之前,我看了這個線程,但它只是幫助了一個人。從理論上講,所有功能都是我需要的正確操作符。但不知何故,我沒有給所有函數迭代。但我認爲通過運行for循環,我做 這是行不通的,以及: 'TR = ALL((d [I] [STR(年))!= 0) 如果TR: 打印( d [i])' – TDot
然後你真正的問題是理解什麼是可迭代的,以及如何傳遞它。 '(d [i] [str(year)])!= 0'是一個'bool',所以你需要傳遞一個列表到'all' –