Python——默认字典 (defaultdict)
默认字典 (defaultdict)
创建不同类型的默认字典。
默认字典 (defaultdict)
默认字典的功能与 dict 基本相同,但在访问一个不存在的 key 时,默认字典会提供一个默认值,而不是引发异常。
1.创建默认字典
默认字典的构造函数接受一个工厂函数 default_factory 作为参数,可以将一个类型名看做是一个工厂函数,比如 list,tuple,str 等。
这个函数会在要生成默认值的时候无参调用,如果使用类型名作为工厂函数,则这个类型必须要有无参构造函数,比如:
dd = collections.defaultdict(int) #使用 int 作为工厂函数
print(dd['a']) #访问不存在的 key:'a'
dd = collections.defaultdict(tuple) #使用 tuple 作为工厂函数
print(dd['a']) #访问不存在的 key:'a'
dd = collections.defaultdict(str) #使用 str 作为工厂函数
print(dd['a']) #访问不存在的 key:'a'
class Test:
def __init__(self,name): #只有一个构造函数,而且它有一个参数
print("init")
dd = collections.defaultdict(Test) #使用自定义类型 Test 作为工厂函数
print(dd['a']) #运行到这里就会出现异常,原因是 Test 类没有无参的构造函数
直到最后一行语句之前,上面的结果是:
0
()
第三行是字符串的默认值:空字符串。
如果不提供工厂函数,那么默认值的功能就失效了,此时默认字典与普通 dict 表现的功能一致:
dd = collections.defaultdict()
#虽然 dd 是一个默认字典,但由于没有指定工厂函数,没办法产生一个默认值
#因此还是会发生异常
print(dd['a'])
编程要求
1.返回一个 int 类型的默认字典的默认值
2.返回一个 list 类型的默认字典的默认值
3.返回一个 tuple 类型的默认字典的默认值
4.返回一个 str 类型的默认字典的默认值
测试说明
测试输出:
int 默认字典的默认值: 0
list 默认字典的默认值: []
tuple 默认字典的默认值: ()
str 默认字典的默认值:
代码:
return dd
//如果注释理解有误,请大佬们多多评论指教!!
版权声明: 本文为 InfoQ 作者【在即】的原创文章。
原文链接:【http://xie.infoq.cn/article/0d7cf33e28ce1c571de749eae】。文章转载请联系作者。
评论