2015-09-10 6 views
5

私はcollectionsモジュールのカウンタを持っています。すべてのカウントを合計する最善の方法は何ですか?Pythonでカウンタの値をすべて合計する

は例えば、私が持っている:

my_counter = Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1}) 

7が返された値を取得したいと思います。私が知る限り、関数sumは複数のカウンタを一緒に追加するためのものです。このような

+0

あなたが持っていた場合(例えば、 'my_counter = Counter(source)')、 'len(source)'を実行するだけです。 – acushner

答えて

10

何かが、

sum(my_counter.itervalues()) 

あなたが任意の中間データ構造を作成しないこの方法を行うだけで合計が遅延評価されます。

0
c = Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1}) 
len(list(c.elements())) 
2
>>> from collections import Counter 
>>> sum(Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1}).values()) 
7 

カウンタオブジェクトを操作するための一般的なパターン:合計(c.values())すべてのカウントの
#合計

出典:https://docs.python.org/2/library/collections.html

+0

Python 3.6.1で正しく動作します! –

関連する問題