我是一名新的Python程序员,我正在读取字典的.get方法,所以我试着自己使用它。我尝试了一些非常简单的代码:
h = dict()
h.get('a', 1)
print (h)
解释员只返回:
{}
我知道如果找不到你要求的密钥,.get方法会返回你提供的默认值,但实际上它是否会在字典中创建一个新密钥和存储桶?如果是这样,为什么我的代码不返回新项目?感谢
答案 0 :(得分:1)
不,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}
答案 1 :(得分:0)
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}
答案 2 :(得分:0)
'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
如果您需要更多信息,请参阅This documentation解释get()
方法的工作原理。
答案 3 :(得分:0)
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']
。