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

10 投票
3 回答
7199 浏览
提问于 2025-04-15 20:36

我有一个字典的列表。我需要检查这个列表里的所有字典是否都是空的。我想找一个简单的语句,可以一行代码完成这个检查。

有没有一种方法可以用一行代码做到这一点(不包括打印的部分)?

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

print all_empty

我对Python还比较陌生……我不知道有没有简单的方法可以直接检查这个。提前谢谢大家。

3 个回答

9

代码 not any(d for d in l) 根据德摩根定律,可以理解为 all(not d for d in l),但它只用了一个 not 操作符。而且它的短路行为也是一样的。

编辑 1: 里面的生成表达式其实是多余的(虽然没什么坏处):not any(l) 更快,也更简洁。

编辑 2: 有个评论说 all(not d for d in l) 更能表达你的意思,而我强烈不同意:即使在自然语言中,“列表中的所有项目都是空的”并不比“列表中没有项目是空的”更正常、更直接或更清晰——除了逻辑上的绝对等价,这两种表达方式在心理上也非常接近,基本上是等价的。

10

在这种情况下,not any(d for d in l) 可以简化为 not any(l)

26
all(not d for d in l)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答