Python:检查列表中所有字典是否为空
我有一个字典的列表。我需要检查这个列表里的所有字典是否都是空的。我想找一个简单的语句,可以一行代码完成这个检查。
有没有一种方法可以用一行代码做到这一点(不包括打印的部分)?
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)
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。