Поиск файла в алфавитном порядке в Python выполняется медленноPython

Программы на Python
Ответить
Anonymous
 Поиск файла в алфавитном порядке в Python выполняется медленно

Сообщение Anonymous »

У меня есть 2 текстовых файла, расположенных в алфавитном порядке.
wordlist.txt, который содержит список уникальных слов:

Код: Выделить всё

(word)
a
ad
and
at
dictionary.txt, который содержит список неуникальных слов, за которыми следуют табуляция и определение:

Код: Выделить всё

(word)  (definition)
and congiunzione
at  abbreviazione
at  avverbio
Для каждого слова в wordlist.txt мне нужно пройти по dictionary.txt, пока я не найду первое совпадение, и собрать соответствующие определения и последующие, если они есть.
Собрав, я прерываю цикл поиска, так как дальше перемещаться по словарю было бы бесполезно.
Я приступаю к определению следующая запись в wordlist.txt и т. д.
Это фрагмент моего кода:

Код: Выделить всё

for wordtosearch in open("wordlist.txt", "r"):
found = 0
isfound = False

for dictionaryentry in open("dictionary.txt", "r"):
dictionaryelements = dictionaryentry.split("\t") #split the word and the definition

if wordtosearch == dictionaryelements[0]:
# ... here I gather the definition and I concatenate it to the previous one
found += 1   #at least 1 entry is found
isfound = True
else:
isfound = False

#if we don't have a match in the current cicle but we've had at least un match before, it means we can stop search further
if found > 0 and isfound == False:
break
Как видите, для каждого поиска слова мне нужно просмотреть словарь, пока слово не будет найдено. Это занимает много времени, так как и в списке слов, и в словаре сотни статей, и даже если я пропущу это, на самом деле мне придется искать в пяти разных словарях.
Я подумал о сохранении номер строки, в которой совпало предыдущее слово, чтобы поиск следующего слова начинался с этой строки словаря.txt, а не с начала.
Если для предыдущего слова не найдено совпадений, я буду использовать предыдущий к этому и так далее.
Было бы это хорошим решением? Или Python предлагает что-то лучшее, о чем я не знаю?
Кстати, я не ограничиваюсь Python, если вы знаете что-то лучше, но я ограничен Windows.

Подробнее здесь: https://stackoverflow.com/questions/793 ... on-is-slow
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»