小编典典

检查key是否存在并在Python中同时获取值?

python

有时我们可能需要验证字典中某个键的存在,并在存在相应值的情况下进行处理。

通常,我以这种方式进行:

if key in my_dict:
    value = my_dict[key]
    # Do something

这当然是高度可读和快捷的,但是从逻辑的角度来看,它使我感到困扰,因为同一动作连续执行两次。浪费时间。

当然,对字典中的值的访问将摊销,并且通常是瞬时的。但是,如果不是这种情况,并且我们需要重复多次,该怎么办?

我认为的第一个解决方法是使用.get()并检查返回的值是否不是默认值。

value = my_dict.get(key, default=None)
if value is not None:
    # Do Something

不幸的是,这不是很实际,如果密钥存在并且其对应值恰好是,则会引起问题None

另一种方法是使用try/except块。

try:
    value = my_dict[key]
    # Do something
except KeyError:
    pass

但是,我高度怀疑这是最好的方法。

还有其他我不知道的解决方案,还是应该继续使用传统方法?


阅读 210

收藏
2021-01-20

共1个答案

小编典典

如果缺少值的情况确实很特殊,则可以使用异常处理:

try:
    value = my_dict[key]
    # Do something
except KeyError:
    pass

如果丢失和当前密钥都将被处理,那么您的第一个选择将很有用。

if key in my_dict:
    value = my_dict[key]
    # Do something

get在这种特定情况下,使用不会提供任何优势。相反,您必须找到一个无冲突的值来标识 丢失的关键 条件。

2021-01-20