nikk
Ноя. 9, 2010 14:21:11
Добрый день.
Нужно удалять произвольную строку из файла. Из текстового, как я понял, не получится, а если сделать двоичный файл, можно в нём удалить данные в определённой позиции?
Скопировать в память, удалить, записать в новый файл не предлагать. Файл - словарь, около 100 тыс. слов. И удаления нужно проводить часто, на разных итерациях. проще убиться об стену, чем постоянно копировать.
заранее спасибо.
cutwater
Ноя. 9, 2010 16:27:38
Может быть имеет смысл загрузить словарь в память, его обработать и потом сохранить? Зачем каждый раз перезаписывать файл при удалении строки?
Может быть имеет смысл использовать базы данных? SQLite или key-value базы данны
100 тыс. слов это не такой уже и большой словарь.
nikk
Ноя. 9, 2010 18:53:04
Вопрос в том, сколько этот словарь сожрёт памяти, будучи в неё загруженным? Проверю, посмотрим, что получится.
nikk
Ноя. 9, 2010 19:07:37
Проверил. оказывается, не так и много памяти съедается, порядка 11 мешков. Тогда вопрос упрощается:
как удалить элемент с заданным номером из списка? Есть что-нибудь вроде spisok.delete(n)?
grok
Ноя. 9, 2010 19:24:06
Может так:
l = ['a', 'q', 123, 'o', ['23', 4, 'k']]
del l[2]
print l
Результат:
['a', 'q', 'o', ['23', 4, 'k']]
shupg
Ноя. 11, 2010 10:19:10
вопрос в трудоемкости данной операции для питона. O(n) устраивает автора?