在字典中检查键的存在是否比在Python中捕捉KeyError更好?

2024-05-19 03:01:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python方面有一点经验,但我选择了Udacity计算机科学课程来填补我所学知识的空白,并补充我已经知道的知识。本课程研究了一个哈希表查找函数,如果键不在哈希表中,则该函数将为键的值返回None。Python的dictionary类型在键不存在时抛出KeyError,因此课程要求在获取其值之前使用key in mydict。在

我想知道这样做是否更好:

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

。。或者

^{pr2}$

我可以想象Python要检查键是否存在,就必须在字典中找到它。如果我在那个键上抓取值,它必须做同样的事情两次。我这样想是对的,还是Python会做其他事情?在


Tags: key函数innonedictionaryval经验事情
2条回答

如果每次使用特定dict时默认值都是相同的,那么另一个选项是使用collections.defaultdict。声明dict比dict.get()解决方案更冗长,但使用起来更简洁:

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

最好的办法就是利用dict.获取公司名称:

val = my_dict.get(key, mydefaultval)

如果没有这样一个很棒的方法,我建议使用异常。Python文化是不禁止异常的,而且通常显式检查实际上会捕捉异常。在

相关问题 更多 >

    热门问题