计数器更新改变计数器对象Python的列表

时间:2016-05-19 19:10:46

标签: python counter

所以这看起来很奇怪,但假设你有一个计数器列表(例如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

任何人都可以回答第一个改变列表元素的原因吗?

0 个答案:

没有答案