2013-10-06 32 views
2

如何使用收集庫中的計數器將列表清單轉換爲每個單詞總體出現次數的計數?使用計數器和列表清單

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

abc發生在這兩個列表中,但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