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

时间:2010-03-19 17:54:44

标签: python

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

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

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

print all_empty

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

3 个答案:

答案 0 :(得分:21)

all(not d for d in l)

答案 1 :(得分:10)

在这种情况下,

not any(d for d in l)可以缩短为not any(l)

答案 2 :(得分:9)

not any(d for d in l)相当于De Morgan's Lawall(not d for d in l),但仅适用于一个not运算符。短路行为也是等效的。

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

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