【问题标题】:Sum all values of a counter in Python 2 [duplicate]总结Python 2中计数器的所有值[重复]
【发布时间】:2015-09-10 20:55:57
【问题描述】:

我有一个来自collections 模块的计数器。对所有计数求和的最佳方法是什么?

例如,我有:

 my_counter = Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1})

并且想要返回值7。据我所知,sum 函数用于将多个计数器相加。

【问题讨论】:

  • 如果你有计数器的来源(例如my_counter = Counter(source)),你可以做len(source)

标签: python python-2.7 counter


【解决方案1】:

由于您的问题是关于 Python 2.7,您应该使用类似这样的内容

sum(my_counter.itervalues())

在 Python 3.x 上这实际上等同于

sum(my_counter.values())

在这两种情况下,您都懒惰地评估总和并避免使用昂贵的中间数据结构。请注意在 Py 2.x 上使用 Python 3.x 变体,因为在后一种情况下,my_counter.values() 会计算整个计数列表并将其存储在内存中,然后再计算总和。

【讨论】:

    【解决方案2】:
    >>> from collections import Counter
    >>> sum(Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1}).values())
    7
    

    使用 Counter 对象的常见模式:sum(c.values())
    # 所有计数的总和

    来源:https://docs.python.org/2/library/collections.html

    【讨论】:

    • 在 Python 3.6.1 中正常工作!
    【解决方案3】:
    c = Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1})
    len( list(c.elements()) )
    

    【讨论】:

      【解决方案4】:

      来自here

      from collections import Counter
      c = Counter([1,2,3,4,5,1,2,1,6])
      sum(c.values())
      

      【讨论】:

        猜你喜欢
        • 2021-01-21
        • 2014-11-20
        • 1970-01-01
        • 2023-02-16
        • 1970-01-01
        • 2020-05-31
        • 2022-01-07
        • 2018-09-18
        • 1970-01-01
        相关资源
        最近更新 更多