2016-05-20 8 views
2

私は複数カウンター()オブジェクトまたはdicts「を組み合わせた」、しばらくを解決するための をこの問題を調査しています。;しかし、それでもやることはできません。 そして、私は二つの基準の下にいます。たとえば
複数のcollections.Counter()オブジェクトの内容をループでsum()する方法は?

私は順序[1 to 100]で多くの 'カウンタータイプ' 変数名を持っている:

Name:counter_1 Value:Counter({'a':1, 'b':2, 'c':3}) 
Name:counter_2 Value:Counter({'b':5, 'c':19, f:17}) 
Name:counter_3 Value:Counter({'a':11, 'b':22, 'c':33, 'd':97}) 
... 
Name:counter_100 Value:Counter({'c':55, 'd':22, 'e':63, 'f':21}) 

手動で1つずつ追加する場合counter_1 + counter_2 + ... + counter_3、それは私を狂わせるでしょう。

もっとエレガントで簡単な方法がありますか?sum()すべてですか?

ありがとうございます!

答えて

3

組み込み関数sum()を使用して、適切な開始値として空のCounterを指定します。

>>> import collections 
>>> c1 = collections.Counter({'a':1, 'b':2, 'c':3}) 
>>> c2 = collections.Counter({'b':5, 'c':19, 'f':17}) 
>>> sum((c1, c2), collections.Counter()) 
Counter({'c': 22, 'f': 17, 'b': 7, 'a': 1}) 
+0

どうすればc1からc100までの合計が必要ですか? tks – Kudos

+0

すべてを 'list'に入れます。あなたはすでにそれをやっているはずです。本当に別の変数counter_1〜counter_100を持っていますか? – TigerhawkT3

+0

はい。私は(タイプエラー) 'sum(local()['(1,100)]、Counter())'のようなものを試しました。私はPythonでも新しいです。 – Kudos

関連する問題