任何方法来解决python中的浮点计数器值

时间:2012-06-05 15:27:38

标签: python

我正在编写一个平均值的程序。详细信息:我有一个文件夹,其中包含.txtfloatCounter个文件 我所做的只是总结浮动值并将它们存储在每个文件的Counter中 之后我想在.txt中添加所有值,并将它们除以总数。文件(即Counter)。

但最好以Counter存储,但我希望使用sum(Counter.values())添加'float' object has no attribute 'values'中的值,然后会出现错误,显示float }
我也阅读了手册,他们也说整数值是可能的 但有没有在计数器中添加{{1}}值。

3 个答案:

答案 0 :(得分:5)

为什么使用Counter object来汇总文件中的值?它声明的目的是“用于计算可散列对象”(即如果你有多个离散的对象,你想要计算它们的实例)。

如果要存储每个文件的和值浮点值,请尝试使用常规字典:

floatsums = {}
floatsums['file1.txt'] = ... // insert code to sum the floats

total = sum(floatsums.values())
numfiles = len(floatsums)

答案 1 :(得分:3)

更简单:

from collections import defaultdict
sums = defaultdict(lambda: 0)

然后:

sums['a'] += 1.

答案 2 :(得分:0)

尽管文档说的是,但将浮点值放入Counter非常有效。亲自尝试一下。

    from collections import Counter

    a = Counter()
    a['a'] += 1
    a['a'] += 0.1
    a['b'] += 0.1
    print(list(a.items()))

至少在Python 3中。这给了

    [('a', 1.1), ('b', 0.1)]

这适用于Python 2和3.当然,由于这不是文档所说的,它在技术上是未定义的行为,因此它可能在将来的版本中不起作用,但我对此表示怀疑。不过,如果你想完全符合规范,你可以这样做:

    from collections import defaultdict

    a = defaultdict(float)

这将为您提供与上述相同的结果,仅使用记录的功能。