什么是检查一系列dicts是否都等于假的最快方法?

时间:2013-04-02 08:10:02

标签: python python-2.7

例如,给出以下数组:

[{}, {}, {}, {}, {}, {}, {}]

我想测试是否有任何非空的dicts并返回True,如果是这样的话,例如:

[{}, {}, {}, {}, {}, {}, {}] == False
[{}, {}, {}, {}, {}, {}, {'key': 'val'}] == True

1 个答案:

答案 0 :(得分:10)

使用any功能。

>>> any([{}, {}, {}, {}, {}, {}, {}])
False
>>> any([{}, {}, {}, {}, {}, {}, {'key': 'val'}])
True

any函数遍历一个iterable并检查是否有任何值为True - ish。这些值是下面未包含的任何值:

False
0  # and any value equal to it, e.g. 0.0
None
[]
()
# and any other empty container

{}是一个空容器(字典),因此在布尔上下文中求值为False。当您在列表中包含非空字典时,结果为True,因为列表中的值现在在布尔上下文中计算为True