所以这看起来很奇怪,但假设你有一个计数器列表(例如5个不同的文件)。显然在一个Counter对象的单独声明上使用update将改变列表中的原始Counter。谁知道为什么?
from collections import Counter
counts = [Counter({'A':5,'B':0,'C':10}),Counter({'A':2,'B':0,'C':0}), Counter({'A':2,'B':0,'C':6}),Counter({'A':5,'B':0,'C':6}),Counter({'A':5,'B':0,'C':6})]
def combine_counts(counts):
comb = counts[0]
for c in counts[1:]:
comb.update(c)
return comb
comb = combine_counts(counts)
print comb
print counts
现在看一下计数,你会发现梳子有正确的计数,但它改变了计数[0]。即使计数[0]不应该在我的理解中改变吗?
无论如何这是一个简单的解决方法:
def combine_counts(counts):
comb = Counter({})
for c in counts:
comb.update(c)
return comb
任何人都可以回答第一个改变列表元素的原因吗?