[英]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>
的真實性 。 對象具有某種定義的“真實性”價值。True
與False
的真實性分別是True
與False
。 對於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.