簡體   English   中英

何時最好在dict:中使用if'key'而不是if dict.get('key')不是None :?

[英]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運算符; 這也使您的意圖更加清晰。 此外,它還適用於其他序列類型(例如listtuple等)

順便說一句,不要使用dict作為變量名; 它遮蓋了內置函數/類型dict

這個更好。

if 'key' in dict:
   print "key found"

另外,正如@falsetrue所指出的,如果dict值為Noneif d.get('key') is not Noneif 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.

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