from collections import defaultdict
#defaultdict 是dict的子类, 所以dict支持的function, defaultdict基本上都支持
#如果程序试图访问不存在的key的value的时候,dict会报key error
#但是defaultdict可以提供一个默认值(其实有default_factory属性,该属性所指定的函数负责为不存在的key来生成value
dict1 = {}
def test():
return "helloworld"
defaultdict1 = defaultdict(test)
print(defaultdict1['shun']) # helloworld
defaultdict1 = defaultdict(int)
print(defaultdict1['shun']) # 0
print(dict1['shun']) # KeyError: 'shun'
from collections import defaultdict
#defaultdict 是dict的子类, 所以dict支持的function, defaultdict基本上都支持
#如果程序试图访问不存在的key的value的时候,dict会报key error
#但是defaultdict可以提供一个默认值(其实有default_factory属性,该属性所指定的函数负责为不存在的key来生成value
"""
有这样一个需求
程序中包含多个key-value 对数据,在这些kwy-value中有些key是重复的,程序希望对这些key-value对进行整理,
ke有对应一个list, 该list中包含这组数据中该key对应的所有value
"""
#方法1: 传统的dict 方法实现
list1 = [("name","guo"),("age",10),("age",11)]
dict1 = {}
for k , v in list1:
#setdefault方法用于获取指定key对应的value
dict1.setdefault(k,[]).append(v)
print(dict1["name"]) # ['guo']
print(dict1) #{'name': ['guo'], 'age': [10, 11]}
#方法2:使用defaultdict 方法实现
list1 = [("name","guo"),("age",10),("age",11)]
dict1 = {}
d = defaultdict(list)
for k , v in list1:
d[k].append(v)
print(d["name"]) #['guo']
print(d) #defaultdict(<class 'list'>, {'name': ['guo'], 'age': [10, 11]})