2013-10-06 4 views
2

Как использовать счетчик в библиотеке коллекций для преобразования списка списков в число количества раз, когда каждое слово встречается в целом?Использование счетчика со списком списков

E.g. [['a','b','a','c'], ['a','b','c','d']] -> {a:2, b:2, c:2, d:1}

т.е. a, b и c происходят в обоих списках, но d происходит только в одном списке.

+0

Вы должны использовать эту библиотеку? Это кажется достаточно простым для кодирования. – Meesh

+0

Ваш пример неверен, этот ответ неверен: 'a' происходит 3 раза, а не 2 раза. Предоставленный ответ не учитывает * общее * возникновение. – displayname

ответ

7

Используя выражение генератора с 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}) 
+0

Как вы это делаете, не используя понимание списка? – indecisivecoder

+0

+1 Upvoted. ;-) –

+0

Пример в исходном вопросе неверен: 'a' происходит 3 раза, а не 2 раза. Предоставленный ответ не учитывает * общее * возникновение. – displayname

Смежные вопросы