.get和词典

时间:2013-09-03 20:51:15

标签: python dictionary

我是一名新的Python程序员,我正在读取字典的.get方法,所以我试着自己使用它。我尝试了一些非常简单的代码:

h = dict()
h.get('a', 1)
print (h)

解释员只返回:

{}

我知道如果找不到你要求的密钥,.get方法会返回你提供的默认值,但实际上它是否会在字典中创建一个新密钥和存储桶?如果是这样,为什么我的代码不返回新项目?感谢

4 个答案:

答案 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']