1、和dict相比,增加了键的默认值
nums=[3,2,1,1,4]
dnum=dict()
for i in nums:
if i in dnum:dnum[i]+=1
else:dnum[i]=1
print(dnum)
输出:{
3: 1, 2: 1, 1: 2, 4: 1}
fnum=defaultdict(int)
for i in nums:fnum[i]+=1 # 不存在的元素+不会报错
print(fnum) # 优化了dict的计数统计
输出:defaultdict(<class 'int'>, {
3: 1, 2: 1, 1: 2, 4: 1})
2、添加默认列表元素
tum=[("A", "1"), ("B", "1"), ("A", "2"), ("B", "2"), ("A", "3"), ("B", "3")]
dtum=dict()
for i,j in tum:
if i in dtum:dtum[i]+=[j]
else:dtum[i]=[j]
print(dtum)
输出:{
'A': ['1', '2', '3'], 'B': ['1', '2', '3']}
ftum=defaultdict(list)
for i,j in tum:
ftum[i].append(j)
print(ftum)
输出:defaultdict(<class 'list'>, {
'A': ['1', '2', '3'], 'B': ['1', '2', '3']})
3、接受一个工厂函数作为默认参数
lm=defaultdict(lambda:[1,2,3,4])
lm["存在"]=["value"]
print(lm["存在"])
输出:['value']
print(lm["不存在"])
输出:[1, 2, 3, 4]
print(lm)
输出:defaultdict(<function <lambda> at 0x000001D073861DC8>, {
'存在': ['value'], '不存在': [1, 2, 3, 4]})
关于defaultdict,应该大概就是这些了,掰了个白~