Другие дали вам способ в памяти, используя set (), и это, как правило, будет самым быстрым способом, и не должны облагаться налогом вашей памяти для набора данных из 60 тыс. Слов (максимум несколько МБ). Вы должны быть в состоянии построить свой набор с:
f=open('words.txt')
s = set(word.strip() for word in f)
Однако для загрузки набора в память требуется некоторое время. Если вы проверяете много слов, это не проблема - время поиска более чем компенсирует это. Однако, если вы собираетесь проверять только одно слово на выполнение команды (например, это приложение командной строки, например, «checkenglish [word]»), время запуска будет больше, чем потребовалось бы вам, чтобы просто выполнить поиск по строке файла. по линии.
Если это ваша ситуация или у вас гораздо больший набор данных, лучше использовать формат на диске. Самый простой способ - использовать модуль dbm . Создайте такую базу данных из списка слов с помощью:
import dbm
f=open('wordlist.txt')
db = dbm.open('words.db','c')
for word in f:
db[word] = '1'
f.close()
db.close()
Тогда ваша программа может проверить членство с помощью:
db = dbm.open('words.db','r')
if db.has_key(word):
print "%s is english" % word
else:
print "%s is not english" % word
Это будет медленнее, чем поиск по набору, так как будет доступ к диску, но будет быстрее, чем поиск, с низким использованием памяти и без значительного времени инициализации.
Существуют и другие альтернативы, такие как использование базы данных SQL (например, sqlite).