コレクション ライブラリのカウンターを使用して、リストのリストを各単語の全体的な出現回数に変換するにはどうすればよいですか?
例えば[['a','b','a','c'], ['a','b','c','d']] -> {a:2, b:2, c:2, d:1}
つまりa
、両方のリストに出現しますがb
、1 つのリストにしか出現しません。 c
d
コレクション ライブラリのカウンターを使用して、リストのリストを各単語の全体的な出現回数に変換するにはどうすればよいですか?
例えば[['a','b','a','c'], ['a','b','c','d']] -> {a:2, b:2, c:2, d:1}
つまりa
、両方のリストに出現しますがb
、1 つのリストにしか出現しません。 c
d
ジェネレーター式を次のように使用するset
:
>>> from collections import Counter
>>> seq = [['a','b','a','c'], ['a','b','c','d']]
>>> Counter(x for xs in seq for x in set(xs))
Counter({'a': 2, 'c': 2, 'b': 2, 'd': 1})
コメントへの応答、ジェネレーター式なし:
>>> c = Counter()
>>> for xs in seq:
... for x in set(xs):
... c[x] += 1
...
>>> c
Counter({'a': 2, 'c': 2, 'b': 2, 'd': 1})
from itertools import chain
from collections import Counter
seq = [['a','b','a','c'], ['a','b','c','d']]
c = Counter(chain(*[x for x in seq]))
print(c)
Counter({'a': 3, 'b': 2, 'c': 2, 'd': 1})