我试图找出将None
作为dict.get
的默认值,但没有为dict.pop
指定默认值的原因是什么
{}.get('my_key')
# output: None
{}.pop('my_key')
# output: KeyError: 'my_key'
我认为没有dict.pop
的隐式默认值的原因是因为您可能有值为None
的键,因此,为了不混淆您的键是否在字典中,dict.pop
的隐式默认值没有多大意义。但是,这个解释同样适用于dict.get
,而不是:
{'my_key': None}.get('my_key')
# output: None
# but doesn't tell you if the key is truly in the dictionary or not
如果您主要关心的是字典中是否存在键,那么应该通过
'my_key' in my_dict
完成.get
和.pop
正如您所想象的,服务于稍微不同的目的.get
是严格的检索,而.pop
是检索和删除。您将希望使用最适合您的用例的相应方法,如果不需要处理KeyError
,则使用默认值至于
.pop
在默认情况下不使用默认值的原因,这是因为该操作还希望从字典中删除一个键。如果操作成功完成而未引发错误,则可能会错误地认为密钥也会从字典中删除对于
.get
,该方法专门作为替代方法存在,以在__getitem__
方法上提供默认值,您通常将该方法的语法视为my_dict['my_key']
。后者将在密钥不存在时引发KeyError
get
在某种意义上存在于两种类型中:一种产生了KeyError
,另一种没有另一方面
pop
不是引发KeyError
的另一个操作的无错误版本,因此它用于两种情况:默认情况下引发KeyError
,但在请求时返回默认值读取键的精确值的方法是
dict.get(key[,default])是try-get值,如果不返回“default”版本
相关问题 更多 >
编程相关推荐