如何用新列表的元素频率更新已有的collections.Counter?
如何更新collections.Counter的元素频率统计?
有两种简单方式可以实现多次运行函数后更新计数器的需求:
使用
Counter自带的update()方法(原地更新)
这个方法会直接把新列表中元素的频率累加到已有计数器里,无需重新赋值。示例代码如下:import collections # 第一次运行得到列表a,初始化计数器 a = [1, 2, 3, 1, 2, 3, 4] count = collections.Counter(a) # 此时count为Counter({1: 2, 2: 2, 3: 2, 4: 1}) # 第二次运行得到列表b,更新计数器 b = [1, 3, 5, 8, 2, 1, 3] count.update(b) # 更新后的count结果:Counter({1: 4, 3: 4, 2: 3, 4: 1, 5: 1, 8: 1})使用加法运算符生成新的Counter对象
这种方式会返回一个新的Counter实例,原计数器不会被修改,适合需要保留原统计结果的场景。示例代码如下:import collections a = [1, 2, 3, 1, 2, 3, 4] count = collections.Counter(a) b = [1, 3, 5, 8, 2, 1, 3] # 生成新的计数器,原count保持不变 new_count = count + collections.Counter(b) # new_count结果:Counter({1: 4, 3: 4, 2: 3, 4: 1, 5: 1, 8: 1})
内容的提问来源于stack exchange,提问作者JACKY88
相关产品推荐
相关产品推荐

