有时我们可能需要验证字典中某个键的存在,并在存在相应值的情况下进行处理。
通常,我以这种方式进行:
if key in my_dict: value = my_dict[key] # Do something
这当然是高度可读和快捷的,但是从逻辑的角度来看,它使我感到困扰,因为同一动作连续执行两次。浪费时间。
当然,对字典中的值的访问将摊销,并且通常是瞬时的。但是,如果不是这种情况,并且我们需要重复多次,该怎么办?
我认为的第一个解决方法是使用.get()并检查返回的值是否不是默认值。
.get()
value = my_dict.get(key, default=None) if value is not None: # Do Something
不幸的是,这不是很实际,如果密钥存在并且其对应值恰好是,则会引起问题None。
None
另一种方法是使用try/except块。
try
except
try: value = my_dict[key] # Do something except KeyError: pass
但是,我高度怀疑这是最好的方法。
还有其他我不知道的解决方案,还是应该继续使用传统方法?
如果缺少值的情况确实很特殊,则可以使用异常处理:
如果丢失和当前密钥都将被处理,那么您的第一个选择将很有用。
get在这种特定情况下,使用不会提供任何优势。相反,您必须找到一个无冲突的值来标识 丢失的关键 条件。
get