Python中实现字典计数赋值的更优写法是什么
Python 字典指定key计数的简洁实现方案
以下几种实现的时间复杂度和你当前使用的if-else写法完全一致,均为O(1)哈希操作,性能无差异,代码简洁度和可读性更高:
- 方案1:使用dict内置
get方法(无需导入模块)
适合临时少量计数场景,不用额外引入依赖:
current = {} current[key] = current.get(key, 0) + 1
get方法会在key不存在时返回指定的默认值(此处为0),无需手动判断key是否存在。
- 方案2:使用
collections.defaultdict
适合频繁做计数操作的场景,初始化时指定值类型为int,访问不存在的key时会自动初始化为0:
from collections import defaultdict current = defaultdict(int) # 直接累加即可,无需额外判断 current[key] += 1
- 方案3:使用
collections.Counter(专门计数类)
如果全链路都是计数统计场景,优先使用这个工具类,除基础计数外还支持排序、TopN提取、多计数结果合并等进阶功能:
from collections import Counter current = Counter() current[key] += 1 # 进阶用法:可直接传入可迭代对象完成批量统计 # current = Counter(["a", "b", "a", "c"]) 可直接得到所有元素的计数结果
内容的提问来源于stack exchange,提问作者icn
相关产品推荐
相关产品推荐

