Del*_*gan 2 python dictionary python-3.x
有时我们可能需要验证字典中是否存在密钥,并且如果存在相应的值则进行某些操作.
通常,我这样做:
if key in my_dict:
value = my_dict[key]
# Do something
Run Code Online (Sandbox Code Playgroud)
这当然是高度可读和快速的,但从逻辑的角度来看,它困扰我,因为相同的动作连续执行两次.这是浪费时间.
当然,对字典中的值的访问是分摊的,并且通常是即时的.但是,如果情况并非如此,我们需要重复多次呢?
我想到的第一个解决方法是使用.get()并检查返回的值是否不是默认值.
value = my_dict.get(key, default=None)
if value is not None:
# Do Something
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不是很实用,如果密钥存在且它的相应值是精确的,它可能会导致问题None.
另一种方法是使用try/ exceptblock.
try:
value = my_dict[key]
# Do something
except KeyError:
pass
Run Code Online (Sandbox Code Playgroud)
但是,我非常怀疑这是最好的方法.
还有其他解决方案我不知道,还是应该继续使用传统方法?
如果缺少值的情况非常特殊,那么异常处理是合适的:
try:
value = my_dict[key]
# Do something
except KeyError:
pass
Run Code Online (Sandbox Code Playgroud)
如果要处理丢失和存在的键,则第一个选项很有用.
if key in my_dict:
value = my_dict[key]
# Do something
Run Code Online (Sandbox Code Playgroud)
get在这种特定情况下使用不会提供任何优势.相反,您必须找到一个非冲突的值来识别缺失的键条件.
| 归档时间: |
|
| 查看次数: |
9176 次 |
| 最近记录: |