簡體   English   中英

檢查字典中鍵的存在是否比在Python中捕獲KeyError更好?

[英]Is checking for the existence of a key in a dictionary better than catching a KeyError in Python?

我在Python方面有一些經驗,但是我正在參加Udacity計算機科學課程,以填補我所學知識的空白並補充我已經知道的知識。 該課程遍歷了哈希表查找功能,如果該鍵不在哈希表中,則該鍵針對鍵的值返回None。 當鍵不存在時,Python的字典類型會引發key in mydict ,因此該課程說要在獲取其值之前key in mydict使用key in mydict

我想知道的是,這樣做是否更好:

mydefaultval = 75
key = ..
mydict = ..
if key in mydict:
    val = mydict[key]
else:
    val = mydefaultval

.. 要么

mydefaultval = 75
key = ..
mydict = ..
try:
    val = mydict[key]
except KeyError:
    val = mydefaultval

我可以想象,對於Python檢查密鑰是否存在,它必須在字典中找到它。 如果我然后在那個鍵上獲取值,它必須做兩次相同的事情。 我是否認為這是正確的,還是Python會做其他事情?

最好的方法是使用dict.get:

val = my_dict.get(key, mydefaultval)

如果沒有像這樣的很棒的方法,我建議使用該異常。 Python的文化是不禁止例外,而且無論如何,顯式檢查通常實際上都會捕獲例外。

如果每次使用特定字典時默認值都將是相同的值,則另一個選擇是使用collections.defaultdict dict.get()解決方案相比,聲明dict更為冗長,但用法更為繁瑣:

>>> from collections import defaultdict
>>> mydict = defaultdict( lambda: 75 )
>>> mydict[3]
75

暫無
暫無

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

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