2013-10-13 6 views
0

У меня есть много списков Python, заполненных словами, и среди этих слов я хотел бы оставить тех, кто появляется, по крайней мере, в двух списках.count over несколько Список

Моя первая догадка разрушаться все эти список в один большой, а затем, чтобы слова, которые имеют счета> 1.

Проблема в том, что у меня есть некоторые проблемы памяти, когда я пытаюсь свернуть все список в большой.

Любая помощь пожалуйста? спасибо большое

ответ

3

Если вы считаете что-то, используйте счетчик!

from collections import Counter 

c = Counter(['bob','steve','steve','joe']) 

# c == Counter({'steve': 2, 'bob': 1, 'joe': 1}) 

c.update(['alan','jose','steve']) 

# c == Counter({'steve': 3, 'jose': 1, 'bob': 1, 'joe': 1, 'alan': 1}) 
+0

спасибо, что это именно то, что я искал – user2741700

+0

жаль, что я говорил слишком быстро, у меня есть еще MemoryError, когда я петля к upedate счетчика – user2741700

+0

@ user2741700 списки, вероятно, занимают почти все ваша память сама по себе. Либо конвертируйте каждый список в счетчик и удалите список, либо используйте какую-либо другую стратегию (например, просто создайте счетчик, в первую очередь, никогда не используя промежуточный список) – roippi