У меня есть один список, содержащий около 400 слов. И еще один список списков, в котором каждый список содержит около 150 000 слов. В этом списке 20 таких списков.
Теперь я хочу посмотреть, сколько из этих 400 слов появляется во всех этих 150 000 слов. Я также хочу узнать слово из этих 400 слов, сколько раз в списке слов 150k, какие из этих слов встречаются больше всего, сколько раз и т.д.
Единственное решение, о котором я могу думать, - это решение полиномиального времени. Это очень плохое решение и будет очень медленным:
for one_list in list_of_150kwords:
for key in 400_words:
for word in one_list:
if key == word:
# count this word
# do other stuff
Это очень уродливое и плохое решение, но я не могу придумать ничего лучшего. Я пробовал то же самое с NumPy, преобразовывая эти списки в массивы NumPy:
list_of_150kwords = numpy.array(list_of_150kwords)
...
Но я все еще нахожу это очень медленным. Любое другое решение? Или любая библиотека?