Python:默认字典初始化

时间:2018-08-10 04:58:41

标签: python dictionary defaultdict

我创建了一个默认字典,如下所示:

from collections import defaultdict
dd = defaultdict(lambda : "Key not    found")
dd = {'a':1,'b':2}
print(dd) 
print(dd['a']) # Prints 1
print(dd['c'])  # Throws KeyError

但是,以下代码段有效:

from collections import defaultdict
(lambda : "Key not    found")
dd['a']=1
dd['b']=2
print(dd) 
print(dd['a']) # Prints 1
print(dd['c'])  # Prints "Key not found"

谁能解释一下为什么第一个代码段引发错误,而第二个代码却按预期运行呢?

3 个答案:

答案 0 :(得分:2)

您已经用dd = defaultdict(lambda : "Key not found")覆盖了dd = {'a':1,'b':2},因此defaultdict()变成了dict()

答案 1 :(得分:1)

请考虑删除第一个代码段中的第3行。 这已经覆盖了您的类型为defaultdict的dd。

答案 2 :(得分:0)

问题出在您的代码段的以下两行-

dd = defaultdict(lambda : "Key not    found")
dd = {'a':1,'b':2}

在第一行中,您正在创建 defaultdict 对象,并且 dd 指向该对象- dict_object

在第二行中,您正在创建一个字典,现在将其引用保存到 dd - enter image description here 因此,如上图所示, dd 指向第二行中创建的新词典。而且,由于 dd 所指的这本新词典没有名为'c'的键,因此您会遇到找不到键的错误。