python - 检查字典中键是否存在比在 Python 中捕获 KeyError 更好?

标签 python hash hashmap hashtable

我在 Python 方面有一点经验,但我正在学习 Udacity 计算机科学类(class)以填补我所学知识的空白并补充我已经知道的知识。该类(class)介绍了一个哈希表查找函数,如果键不在哈希表中,该函数将返回 None 作为键的值。当键不存在时,Python 的字典类型会抛出一个 KeyError,所以类(class)说在获取它的值之前使用 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 文化是不禁止异常,通常显式检查实际上无论如何都会捕获异常。

关于python - 检查字典中键是否存在比在 Python 中捕获 KeyError 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11129885/

相关文章:

python - 将图像转换为像素阵列

ruby-on-rails - 如何在 Ruby 中手动创建 JSON 结构?

.net - 使用 recordId 作为哈希码是个坏主意吗?

java - 如何从 Java 中的特定键值开始迭代 HashMap?

java - hashmap 如何识别何时需要重新哈希

python - 在同一行打印新输出

python - RetryParams 的 min_retries 的目的是什么?

android facebook 集成 : invalid key hash

java - HashMap 键的随机访问

python - 属性错误 : module 'numpy' has no attribute 'flip'