首页 > 解决方案 > 空字典中的 all() 返回 True 和 any() 返回 False

问题描述

当我在 Python 中通过 dict.values() 调用 all() 和 any() 方法时,出现以下奇怪行为:

In [34]: empty_dict = {}

In [35]: not_empty_dict = {'a': '', 'b': 'anything'}

1 - 当我申请all()并且 dict 为空(没有键)Python返回True(???):

In [36]: all(empty_dict.values())
Out[36]: True

2 - 当我应用any()它返回False

In [43]: any(empty_dict.values())
Out[43]: False

我只是想知道这是什么原因,有人可以解释发生了什么吗?使用all()and any()over not_empty_dict 将按预期工作:

In [45]: all(not_empty_dict.values())
Out[45]: False

In [46]: any(not_empty_dict.values())
Out[46]: True

标签: python-3.xdictionary

解决方案


这是预期的行为。all返回True空的可迭代对象

如果可迭代对象的所有元素都为真(或可迭代对象为空),则返回 True


推荐阅读