Python:检查列表中的所有字典是否为空

Bra*_*ant 8 python

我有一个词典列表.我需要检查该列表中的所有字典是否都为空.我正在寻找一个简单的声明,将在一行中完成.

是否有单行方式来执行以下操作(不包括打印)?

l = [{},{},{}] # this list is generated elsewhere...
all_empty = True
for i in l:
  if i:
    all_empty = False

print all_empty
Run Code Online (Sandbox Code Playgroud)

python有些新东西...我不知道是否有一种速记内置方式来检查这个.提前致谢.

小智 10

not any(d for d in l)可以缩短到not any(l)这种情况.


Ale*_*lli 9

not any(d for d in l)是相当于德·摩根定律all(not d for d in l),但只适用于一个not运营商.短路行为也是等效的.

编辑1:内部genexp实际上(无害但是)冗余:not any(l)更快更简洁.

编辑2:评论声称all(not d for d in l)"你想要表达的更多" not any(l),而且我强烈不同意:即使在自然语言中,"列表中的所有项目都是无人居住的"不是更正常,直接或明确而不是"否"列表的项目填充" - 超出逻辑定律的绝对逻辑等价,两种表达方式也非常接近,并且在人类心理学方面也大致相同.

  • "不是任何(l)"就足够了. (7认同)