我正在编写一个平均值的程序。详细信息:我有一个文件夹,其中包含.txt
个float
个Counter
个文件
我所做的只是总结浮动值并将它们存储在每个文件的Counter
中
之后我想在.txt
中添加所有值,并将它们除以总数。文件(即Counter
)。
但最好以Counter
存储,但我希望使用sum(Counter.values())
添加'float' object has no attribute 'values'
中的值,然后会出现错误,显示float
}
我也阅读了手册,他们也说整数值是可能的
但有没有在计数器中添加{{1}}值。
答案 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)
这将为您提供与上述相同的结果,仅使用记录的功能。