2015-05-02 73 views
11

我期待總結一個python中的計數器列表。例如,要總結:在Python中計數器的總結列表

counter_list = [Counter({"a":1, "b":2}), Counter({"b":3, "c":4})] 

Counter({'b': 5, 'c': 4, 'a': 1})

我可以得到下面的代碼做了總結:

counter_master = Counter() 
for element in counter_list: 
    counter_master = counter_master + element 

但我很困惑,爲什麼counter_master = sum(counter_list)導致錯誤TypeError: unsupported operand type(s) for +: 'int' and 'Counter' ?鑑於可以將計數器加在一起,爲什麼不可能將它們相加?

回答

24

sum函數具有可選開始參數缺省值爲0引用鏈接頁面:

sum(iterable[, start])

的款項開始迭代的項目從左至右右側並返回 總計

開始到(空)Counter目的是避免TypeError

In [5]: sum(counter_list, Counter()) 
Out[5]: Counter({'b': 5, 'c': 4, 'a': 1})