15

コレクション ライブラリのカウンターを使用して、リストのリストを各単語の全体的な出現回数に変換するにはどうすればよいですか?

例えば[['a','b','a','c'], ['a','b','c','d']] -> {a:2, b:2, c:2, d:1}

つまりa、両方のリストに出現しますがb、1 つのリストにしか出現しません。 cd

4

3 に答える 3

22

ジェネレーター式を次のように使用する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})
于 2013-10-06T16:20:20.883 に答える
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})
于 2021-01-09T14:09:00.943 に答える