我使用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' –