我是一个新的 Python 程序员,我正在阅读字典的 .get 方法,所以我尝试自己使用它。我尝试了一些非常简单的代码:
h = dict()
h.get('a', 1)
print (h)
口译员只返回:
{}
我知道 .get 方法会在找不到您要求的键时返回您提供的默认值,但它实际上会在字典中创建一个新的键和存储桶吗?如果是这样,为什么我的代码不返回新项目?谢谢
我是一个新的 Python 程序员,我正在阅读字典的 .get 方法,所以我尝试自己使用它。我尝试了一些非常简单的代码:
h = dict()
h.get('a', 1)
print (h)
口译员只返回:
{}
我知道 .get 方法会在找不到您要求的键时返回您提供的默认值,但它实际上会在字典中创建一个新的键和存储桶吗?如果是这样,为什么我的代码不返回新项目?谢谢
不,get
如果不存在,则不会向 dict 添加条目。它不做任何修改。
>>> h = dict()
>>> h.get('a', 1)
1
>>> h
{}
[]
从字典中读取时也是如此;它会为不存在的键引发错误。这与 C++ 不同,[]
如果条目不存在,将在其中添加条目。
>>> h['a']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'a'
>>> h
{}
但是要知道 Python 可以区分读取和写入。分配给不存在的键将创建它,即使读取不存在的键会引发异常。
>>> h['a'] = 1
>>> h
{'a': 1}
h.get('a', 1)
永远不会1
插入h
. 如果您想要一种在不存在任何值时插入默认值的方法,您需要setdefault
:
h = {}
h.setdefault('a', 1)
print h # prints {'a': 1}
h.setdefault('a', 2)
print h # still prints {'a': 1}
'a'
键不存在,因此返回值1
。这是该方法的行为get()
:该get
方法将返回与键对应的值,或者您传递给它的第二个参数(在您的情况下为 1)。
如果您要设置'a'
密钥,则行为会有所不同:
In [10]: h['a']=1
In [11]: h
Out[11]: {'a': 1}
In [12]: h.get('a',3)
Out[12]: 1
如果您需要更多信息,请参阅解释该方法如何工作的文档。get()
dictName.get()
是一个类似于一个try...catch
。如果该值不存在(通常会返回异常),它将在其位置返回另一个值。
h = {}
h.get('a', 1)
print h
h.get('a', 1)
不执行操作h
;它仅返回一个值,您可以(重新)分配给(另一个)变量或测试/打印等。
h = {}
print h.get('a', 1)
. . .will 返回1
,因为h['a']
不存在。然而。. .
h = {}
h['a'] = 0
print h.get('a', 1)
. . .will 返回0
,因为h['a']
确实存在。