web-dev-qa-db-ja.com

2つのcollections.Counter()オブジェクトの内容を合計する

collections.Counter()カウンターを使用しています。これらの2つを有意義な方法で組み合わせたいと思います。

たとえば、2つのカウンターがあるとします。

Counter({'menu': 20, 'good': 15, 'happy': 10, 'bar': 5})

そして

Counter({'menu': 1, 'good': 1, 'bar': 3})

私は最終的にしようとしています:

Counter({'menu': 21, 'good': 16, 'happy': 10,'bar': 8})

これどうやってするの?

41
Matt O'Brien

あなたがする必要があるのはそれらを追加することです:

>>> from collections import Counter
>>> a = Counter({'menu': 20, 'good': 15, 'happy': 10, 'bar': 5})
>>> b = Counter({'menu': 1, 'good': 1, 'bar': 3})
>>> a + b
Counter({'menu': 21, 'good': 16, 'happy': 10, 'bar': 8})

docs から:

Counterオブジェクトを組み合わせてマルチセット(ゼロより大きいカウントを持つカウンター)を生成するためのいくつかの数学演算が提供されています。加算と減算は、対応する要素のカウントを加算または減算することにより、カウンターを結合します。

65
TerryA