Найти - Пользователи
Полная версия: каким способом лучше сравнить два файла?
Начало » Python для новичков » каким способом лучше сравнить два файла?
1
studer_fkhv
Всем доброго времени суток, хотел узнать, каким образом оптимальнее сравнить два текстовых файла (по сути словаря, в каждом по 500,000 строк) на предмет наличия в них одинаковых слов. Прошу прощения, если не корректно ставлю вопрос, все-таки в программировании не силен, интересует, что лучше использовать списки, словари и какие функции для их обработки?
doza_and
А у вас слова в файлах отсортированы? Если да - то ни списков ни словарей не нужно. Если нет - проще воспользоваться словарем - загрузить меньший их двух файлов - второй читать и проверять наличие слова. Гарантировать оптимальность не могу, но есть много способов сделать работу намного медленнее. Кстати много зависит еще от того как вы будете читать слова из файла.
studer_fkhv
Я так сравниваю на данный момент:
for word in open('english10.dic',"r"):
for decode in open('decode_SLVTSSDADP.txt',"r"):
if decode == word:
print 'Найдено совпадение: ',decode
print ' Проверка завершена.'
doza_and
wordset=set([decode in open('decode_SLVTSSDADP.txt',"r")])
for word in open('english10.dic',"r"):
if word in wordset:
print 'Найдено совпадение: ',decode
print ' Проверка завершена.'
Былобы интересно насколько отличаются способы по быстродействию если будете сравнивать отпишитесь пожалуйста.
sp3
ну явно видно что код у тс читает файл decode_SLVTSSDADP.txt сколько слов в english10.dic :) что не есть тру
studer_fkhv
sp3
ну явно видно что код у тс читает файл decode_SLVTSSDADP.txt сколько слов в english10.dic :) что не есть тру
Поподробнее можно, не понимаю о чем речь, ведь каждое слово из english10.dic ищется на соответсвие в decode..txt
studer_fkhv
doza_and
Былобы интересно насколько отличаются способы по быстродействию если будете сравнивать отпишитесь пожалуйста.
Я в шоке, дополнил скрипт таймером и сравнил:
from timeit import timeit

def compare():
for word in open('english10.dic',"r"):
for decode in open('decode_SLVTSSDADP.txt',"r"):
if decode == word:
print 'Найдено совпадение: ',decode

compare()
print 'Status ...OK'
print(timeit('compare()','from _main__ import compare',number = 1))
Время выполнения 2801.22383886
По вашему варианту с использованием множеств вместо списка : 0.320396545122
Только надо было поправить чуток:
wordset=set([DECODE FOR decode in open('decode_SLVTSSDADP.txt',"r")])
В 9000 раз быстрее, это круть:cool:
doza_and
Рад был оказать содействие, извините что была ошибочка я просто не запускал - изложил идею.
asilyator
ТСу срочно читать, что такое класс сложности.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB