一般应用场景
这三个函数均可以对Python中的字典进行操作。我们知道,当我们需要查找字典中某个键对应的值时,会出现该键并不存在的情况,此时会返回一个KeyError。如dict[key]中,若key不存在则会返回KeyError。为了避免报错,我们就需要为字典当中的键值赋一个默认值。
如上图,我们可以看到字典dict0中并没有键h,当我们试图打印其键h对应的value时,触发KeyError。
基本语法:
get(key,value)
setdefault(key,value)
defaultdict(可调用函数)
get()函数
get()函数会为某个键赋默认值,而不改变字典本身。get()函数本质上是获取该键的值。当真实值并不存在时,则返回其默认值;当真实值的确存在时,则返回该键的真实值。如下图:
我们可以很清晰地观察到打印出了键a对应的真实值和键h对应的默认值。
setdefault()函数
setdefault()函数相较于get()函数,最直观的区别在于,setdefault函数为某个键赋默认值时,会直接改变字典本身。setdefault()函数本质上是对该键的值进行设置。当真实值存在时,则不改变真实值;当真实值不存在时,则设置该键值为setdefault()函数传递的参数。如下图:
如图我们观察到a的value并没有变化,h的value赋值为3。
观察上图代码,我们通过for循环遍历list1,然后为每个Key赋值Value为0,再在遍历中每一次遇见某个Key时为其Value加1,实现对list1中每个字符出现次数的统计。
defaultdict()函数
defaultdict()函数归属于collections模块下,接受一个可调用的函数作为参数。该参数返回的类型是什么,defaultdict()函数就将该字典Key对应的Value设置为什么类型。比如default(list)则将该字典的Value设置为list类型。
我们可以看到dict2这个字典的value属于list类型。接下来,我们尝试为dict2来赋值。
我们首先为dict2设置一个空列表为其默认值,之后通过列表的append()函数来对该列表进行添加值。最终打印dict2。