一:dict的get和setdefault
首先,字典dict的get和setdefault的用法都是xxx(key, value), 都是在字典中查找指定的键并返回值,当查找的key键在字典中存在时,两者作用相同。
参考:https://blog.csdn.net/any1where/article/details/127916548
get:在字典的键中查找key,如果找到,则返回该key键对应的值(该值是字典中已经存在的值);如果找不到,则返回value值。不会修改字典,只会返回get()自带的value值(即get()的第二个参数);
setdefault: 在字典的键中查找key,如果找到,则返回该key键对应的值(该值是字典中已经存在的值);如果找不到,则为字典添加key键,并将新添加的key对应的默认值设为default。
会给字典添加一个key健,并将新添加的key键的对应的默认值设为default(是键对应的值,不是键本身)。因此,setdefault()会修改字典。
二:collections的defaultdict
defaultdict和dict的区别就是,当引用不存在的键的时候,deault会自动返回一个类型的值,比如
a = defaultdict(int)
a[10]返回0,因为10不存在于a的键中,而int类型默认值是0,list默认值为:[],str默认值是:'',set默认值是:set()
defaultdict是dict的一个子类,可以用issubclass来进行判断。