Как насчет попробовать решение, которое использует Python dict
(отличается от вашего словаря переменных)? На самом деле, существует действительно изящная версия python dict, предоставляемая Python, называемая defaultdict
, которую можно инициализировать определенным значением, если ключ не существует.
Вы могли бы написать что-то вроде этого:
from collections import defaultdict
def (word_search) :
results = defaultdict(int) # Make the dict use integers as the default entry value, set it to 0 if key does not exist
search_word = dictionary [0]
for search_word in dictionary:
for document in library:
for word in document:
if search_word == word :
results[word] += 1 # Increment the count for the matched word
return results.items() # Return the counts as a set of tuples
Это приведет к набору кортежей, содержащих счетчик каждого слова!
Примечание: Я исправил отступ для циклов for тоже, в случае, если это вызывало проблему
Кроме того, чтобы повысить эффективность, вы можете произвести подсчет всех слов и просто получить количество ваших поисковых слов в конце, тем самым снизив сложность с O (n ^ 3) до O (n ^ 2). ):
from collections import defaultdict
def (word_search) :
counts = defaultdict(int) # Make the dict use integers as the default entry value, set it to 0 if key does not exist
for document in library:
for word in document:
counts[word] += 1 # Increment the count the given word
# Loop through and extract just the counts of the words you're interested in
results = []
for search_word in dictionary:
results.append((search_word, counts[search_word]))
return results
Это должно значительно сократить время выполнения, если ваши документы очень большие!