插入字典会导致KeyError吗?
Can insertion in dictionary cause KeyError?
此代码是否会产生 KeyError?我是 python 的新手,只是想得到一些说明,因为我检查过插入不会导致 KeyError 异常。
def add(self, name, company):
try:
self.identity[self.id] = { 'name': name,
'company': company }
return self.identity
except KeyError:
raise NameNotAdded
此处 identity 是字典,id 是在其他地方初始化的 int,NameNotAdded是自定义异常。
在这种情况下没有任何理由抛出关于 KeyError
的异常。
A KeyError
一般表示密钥不存在。在您的情况下,您只需在字典中添加一个新键。
插入永远不会引发 KeyError
,但如果您提供了错误的密钥,它会引发 TypeError
,这通常意味着您正在尝试使用可变对象作为密钥。 Python 整数是不可变的,因此它们不会引发 TypeError
。
请注意,如果您尝试向 dict
添加太多项目,您将由于可用 RAM 不足而得到 MemoryError
,或者由于您已尝试而得到 OverflowError
超过集合的最大大小(可以从 sys.maxsize
读取)。但是没有必要费心去捕捉那些。 :)
此代码是否会产生 KeyError?我是 python 的新手,只是想得到一些说明,因为我检查过插入不会导致 KeyError 异常。
def add(self, name, company):
try:
self.identity[self.id] = { 'name': name,
'company': company }
return self.identity
except KeyError:
raise NameNotAdded
此处 identity 是字典,id 是在其他地方初始化的 int,NameNotAdded是自定义异常。
在这种情况下没有任何理由抛出关于 KeyError
的异常。
A KeyError
一般表示密钥不存在。在您的情况下,您只需在字典中添加一个新键。
插入永远不会引发 KeyError
,但如果您提供了错误的密钥,它会引发 TypeError
,这通常意味着您正在尝试使用可变对象作为密钥。 Python 整数是不可变的,因此它们不会引发 TypeError
。
请注意,如果您尝试向 dict
添加太多项目,您将由于可用 RAM 不足而得到 MemoryError
,或者由于您已尝试而得到 OverflowError
超过集合的最大大小(可以从 sys.maxsize
读取)。但是没有必要费心去捕捉那些。 :)