Check if key exists and get the value at the same time in Python?
有时,我们可能需要验证字典中是否存在某个键,并在相应的值存在的情况下生成一些东西。
通常,我这样做:
1 2 3 | if key in my_dict: value = my_dict[key] # Do something |
当然,这是可读性和快速性很强的,但从逻辑的角度来看,它困扰着我,因为同一个动作连续执行两次。这是浪费时间。
当然,对字典中的值的访问是分摊的,并且通常是即时的。但如果不是这样,我们需要重复多次呢?
我认为第一个解决方法是使用
1 2 3 | value = my_dict.get(key, default=None) if value is not None: # Do Something |
不幸的是,这不是很实际,如果密钥存在并且其对应值精确为
另一种方法是使用
1 2 3 4 5 | try: value = my_dict[key] # Do something except KeyError: pass |
然而,我非常怀疑这是最好的方法。
有没有其他我不知道的解决方案,或者我应该继续使用传统的方法?
如果缺少值的情况确实异常,则异常处理是适当的:
1 2 3 4 5 | try: value = my_dict[key] # Do something except KeyError: pass |
如果要处理丢失和当前的密钥,那么第一个选项很有用。
1 2 3 | if key in my_dict: value = my_dict[key] # Do something |
在这种特殊情况下,使用
如前几次所述,异常处理是一种方法。但是,如果你想使用
1 2 3 4 | sentinel = object() value = my_dict.get(key, sentinel) if value is not sentinel: # Do something with value |
1 2 | if (dict.get('key') is not None) and ('key' in dict): var = dict['key'] |
if语句的第二部分可能不是完全必要的,但我在自己的代码中使用了这种格式,它完成了任务。