- dict()
>>> aa = dict() # 创建一个字典aa >>> aa["dd"] # 访问字典中不存在的Key Traceback (most recent call last): # 报错 File "<stdin>", line 1, in <module> KeyError: 'dd' >>> aa["dd"] = 1 >>> aa["dd"] 1
- defaultdict()
#没有使用函数来初始化defaultdict,其和普通字典(dict)功能一样 >>> from collections import defaultdict >>> aa = defaultdict() #创建一个默认字典 >>> aa["dd"] # 访问不存在的Key Traceback (most recent call last): #仍然报错 File "<stdin>", line 1, in <module> KeyError: 'dd' >>> aa["dd"] = 1 >>> aa["dd"] 1
#使用函数来初始化defaultdict >>> from collections import defaultdict >>> aa = defaultdict(list) # 使用list来初始化defaultdict() >>> aa["ff"] # 访问不存在的Key并没有报错。 [] >>> aa defaultdict(<class 'list'>, {'ff': []}) >>> aa["ff"].append(1) # 给"ff"添加value >>> aa defaultdict(<class 'list'>, {'ff': [1]}) >>> from collections import defaultdict >>> def fun(): # 使用自定义的函数来初始化defaultdict() ... return "我是默认值" ... >>> aa = defaultdict(fun) >>> aa["gg"] '我是默认值' >>>
- defaultdict()和dict()的区别和共性:
- defaultdict() 它最大的特点就是使用函数来初始化字典,当Key不存在时,它会根据传入的函数产生默认值。
- dict() 它若访问不存在的Key时,会报错:KeyError。
- 在其他方面,两个的用法基本一致。