Не уверен, что это полностью решит вашу проблему, но вы, кажется, создаете словарь с логическими значениями, которые хранят результат поиска слова в списке / наборе / что угодно.
Если только несколько слов находятся в списке, он по-прежнему создает огромный словарь с множеством False
значений, когда вам просто нужны True
значения (если вам не нужно знать, какие значения были протестированы)
Я бы заменил:
features = {}
for word in word_features:
features[word] = (word in words)
с
features = set()
for word in word_features:
if word in words:
features.add(word)
или установите понимание:
features = {word for word in word_features if word in words}
Теперь, чтобы проверить, существует ли word
в features
, просто выполните if word in features:
Создание set
, содержащего только совпадающее слово, исключает записи, где проверяется False
, а также удаляет значение , оставляя только ключи, которым принадлежит слово.