簡體   English   中英

如何檢查具有列表或字典的元組是否為空

[英]How to check if tuple having a list or dictionary is empty

我有一個元組:

details = ({}, [])

由於以下元組中沒有數據,我想返回一個空響應。 為此,我正在寫:

 if not details:
      return Response({})
 else:
    print "Not null"

但這似乎不起作用,因為它總是在else部分進行並且打印不為空。 我是 python 的新手。 任何幫助表示贊賞。

注意 :如果你寫:

 if <expr>: pass 

然后Python 不會檢查<expr> == True ,它會評估<expr>真實性 對象具有某種定義的“真實性”價值。 TrueFalse的真實性分別是TrueFalse 對於None ,真實性是False ,因為數字通常真實性是True當且僅當數字等於0時,對於集合(元組,集合,字典,列表等),如果集合包含at,則真實性為True至少一個元素。 默認情況下,自定義類始終True為感實性,但通過重寫__bool__ (或__len__ ),一個可以自定義規則。

元組的真實性True因為元組本身包含一個或多個項目(否則為False )。 這些元素是什么,是無關緊要的。

如果你想檢查的元組的項目中的至少一個具有感實性 True ,我們可以用any(..)

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

因此,從列表包含至少一個元素或dictonary或兩者的那一刻起, else情況將會觸發,否則if body將會觸發。

如果我們想檢查元組中的所有元素是否True ,我們可以使用all(..)

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

公認的答案意味着any人都不會對真相進行深入的探索。 如下所示:

not not [] # False (double negation as truthness detector).
not not ([],) # True
not not any(([],)) # False
not not any(([1],)) # True
not not any(([None],)) # Still True, as expected.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM