【问题标题】:Summing the contents of two collections.Counter() objects [duplicate]将两个 collections.Counter() 对象的内容相加[重复]
【发布时间】:2013-10-21 18:31:28
【问题描述】:

我正在使用collections.Counter() 柜台。我想以一种有意义的方式将其中两个结合起来。

假设我有 2 个计数器,比如说,

Counter({'menu': 20, 'good': 15, 'happy': 10, 'bar': 5})

Counter({'menu': 1, 'good': 1, 'bar': 3})

我想最终得到:

Counter({'menu': 21, 'good': 16, 'happy': 10,'bar': 8})

我该怎么做?

【问题讨论】:

  • 所有你需要做的就是将它们相加。
  • 更具体地说,sum(counters, Counter()) 确保求和算法以 Counter 基数而不是简单的数字基数开始。

标签: python counter


【解决方案1】:

您需要做的就是添加它们:

>>> from collections import Counter
>>> a = Counter({'menu': 20, 'good': 15, 'happy': 10, 'bar': 5})
>>> b = Counter({'menu': 1, 'good': 1, 'bar': 3})
>>> a + b
Counter({'menu': 21, 'good': 16, 'happy': 10, 'bar': 8})

来自docs

提供了多种数学运算,用于组合 Counter 对象以生成多重集(计数大于零的计数器)。加法和减法通过对相应元素的计数进行加减来组合计数器。

请注意,如果您想通过就地修改 Counter 而不是创建新的来节省内存,您可以使用 a.update(b)b.update(a)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多