空列表中的空字典是否会使列表为非空

时间:2019-07-18 15:10:38

标签: python python-2.7 list dictionary

我有此列表:

li = [{}]

if li:
   print 'yes'

#Output - yes

我错误地认为它不会输出任何东西,因为它是空的(虚假)。现在,如何检查其空度?

3 个答案:

答案 0 :(得分:2)

如果唯一的情况是[{}],则any([{}])返回False。但是,它也会为您可能不需要的False返回[0],并且会为True返回[[{}]]

如果您要检查列表是否仅递归包含空项目,请尝试以下操作:

def is_empty_recursive(collection):
    try:
        if len(collection) == 0:
            return True
    except TypeError:
        # This will happen if collection is not a collection for example len(0) will cause this exception
        return False

    return all(is_empty_recursive(item) for item in collection)

现在您可以像使用它了

li = [{}]

if not is_empty_recursive(li):
   print("yes")

答案 1 :(得分:1)

要检查是否为空,您可以查看列表中包含的所有内容:

emptydict = [{}]
for obj in emptydict:
    if obj:
        print("yes")
    else:
        print("no")  

要了解集合为何以某种方式运行,您可以简要回顾一下集合理论(所有集合中的集合是否都包含自身?):

https://en.wikipedia.org/wiki/Universal_set

答案 2 :(得分:-2)

有多种方法取决于您要实现的目标。您可以简单地使用:

li = []
print(li)

如果没有返回任何内容,则没有任何内容。