Counte。。。
现在假设这样⼀种情况,有⼀组列表字符串。我们需要统计每个字符串出现的次数,并以键值对的形式保存起来。下⾯先来演⽰⼀个错误的写法。
a = ['a','b','r','a','d','r']b = {}for i in a: if i in b: b[i] += 1 else:
b[i] = 1print(b)
对于上述代码,我们还可以进⾏优化,即使⽤字典的setdefault来代替if语句。对于不存在的key赋予默认值0,存在的key就不做任何操作。
a = ['a','b','r','a','d','r']b = {}for i in a:
b.setdefault(i, 0) b[i] += 1print(b)
问题来了,我们还可以再优化吗?上⼀次优化虽然去除了if语句,但对于每⼀个key,我们都需要进⾏判断是否需要给⼀个默认值。defaultdict
答案是可以再次优化,python提供了⼀种默认值字典的数据结构。它允许我们在定义字典时给所有不存在的key设置默认值,这样当取不存在的key时,就不会报错。
from collections import defaultdicta = ['a','b','r','a','d','r']b = defaultdict(int)for i in a: b[i] += 1print(b)
因篇幅问题不能全部显示,请点此查看更多更全内容