[英]When is preferable to use if 'key' in dict: instead of if dict.get('key') is not None:?
我在代碼中一直使用以下語法檢查密鑰的存在:
if dict.get("key") is not None:
print "key found"
但是,我在其他人的代碼中看到了以下語法:
if 'key' in dict:
print "key found"
我只是想知道哪種方式最能表達字典鍵空檢查,以及使用一個相對於另一個是否有優勢(如果有)。
我看到了一個現有問題,正在解決使用.get()的替代方案的類似問題 ,但只想知道我提供的兩個示例之間是否有任何優勢。
如果有一個鍵輸入,其值為None
則兩個表達式將返回不同的結果:
>>> d = {'key': None}
>>> d.get("key") is not None
False
>>> 'key' in d
True
如果要檢查字典中是否存在該鍵,則應使用in
運算符; 這也使您的意圖更加清晰。 此外,它還適用於其他序列類型(例如list
, tuple
等)
順便說一句,不要使用dict
作為變量名; 它遮蓋了內置函數/類型dict
。
這個更好。
if 'key' in dict:
print "key found"
另外,正如@falsetrue所指出的,如果dict
值為None
, if d.get('key') is not None
, if d.get('key') is not None
False
,這可能不是預期的行為。
當您在表達式中使用值並且希望key
不位於dict
時使用默認值時, dict.get
很有用。
d['key'] = 4
a = 5 + d.get('key', 0) # returns 0 if `key` is not in `d`
這兩種方式是不同的。
dict.get("key") is not None
表示dict具有“ key” 而 dict [“ key”]不為None。
"key" in dict
的手段dict有“鑰匙”,並不在乎它的值是無或其他。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.