如何检查具有列表或字典的元组是否为空

Sha*_*hav 4 python tuples list python-2.7

我有一个元组:

details = ({}, [])
Run Code Online (Sandbox Code Playgroud)

由于以下元组中没有数据,我想返回null响应.为此我写信:

 if not details:
      return Response({})
 else:
    print "Not null"
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用,因为它始终在else部件中打印并且打印不为空.我是python的新手.任何帮助表示赞赏.

Wil*_*sem 10

注意:如果你写:

if <expr>:
    pass
Run Code Online (Sandbox Code Playgroud)

那么Python将检查<expr> == True,这将评估感实性<expr>.对象具有某种定义的"真实性"价值.的感实性TrueFalse分别TrueFalse.因为None,真实性是False,对于数字,通常真实性是True当且仅当数字等于零时,对于集合(元组,集合,字典,列表等),真实性是True集合是否包含至少一个元素.默认情况下,自定义类始终True是真实性,但通过覆盖__bool__(或__len__),可以定义自定义规则.

元组的真实性True赋予元组本身包含一个或多个项目(以及False其他).这些元素是什么,是无关紧要的.

如果你想检查元组中至少有一个项目是否真实 True,我们可以使用any(..):

if not any(details):  # all items are empty
    return Response({})
else:
    print "Not null"
Run Code Online (Sandbox Code Playgroud)

因此,从列表中包含至少一个元素或dictonary或两者的else情况开始,案例将会触发,否则if身体将会发射.

如果我们想检查元组中的所有元素是否真实True,我们可以使用all(..):

if not all(details):  # one or more items are empty
    return Response({})
else:
    print "Not null"
Run Code Online (Sandbox Code Playgroud)

  • 答案很详细 (2认同)