Какую структуру данных python лучше всего использовать в этом сценарии? - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь выяснить, какую структуру данных лучше всего использовать в моем коде, я рассмотрел словари, список словарей, классы и т. Д. c, но не уверен, что будет наиболее эффективным и быстрым в использовании.

Программа, которую я написал, открывает несколько текстовых файлов и выбирает слова на основе определенных критериев, затем мне нужно отслеживать выбранные уникальные слова, предложения, в которых они появляются, файлы, в которых они появляются, и подсчет того, сколько раз они появляются в течение всего процесса.

Мне нужно проверить, было ли каждое выбранное слово уже добавлено в структуру данных, так как я перебираю выбранные слова (они будут содержать тысячи слов).

Если он уже был добавлен, добавьте в список файл, из которого он получен, а также предложение, в котором находится слово, и увеличьте счет.

Если его еще нет, добавьте слово к структуре данных, файлу и предложению и инициализируют счет до 1.

На самом деле я не ограничен памятью, но скорость является важным фактором, поэтому я думаю, что что-то вроде C стиля tr ie может работать, но не уверен, что будет лучшим способом реализовать это в python.

Как бы вы это сделали?

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Я думаю, что лучше использовать списки, чтобы вы могли добавить количество слов, которое у вас есть в соответствии с вашими критериями. Вы можете назначить каждое выбранное слово каждому элементу массива. Надеюсь, это полезно для ты:)

0 голосов
/ 14 марта 2020

A словарь будет подходящей структурой данных, использующей слова в качестве ключей и количество слов в качестве значений. Под капотом это карта ha sh, которая дает быстрое время поиска, взяв га sh ключа. Чтобы увеличить значение существующего слова или добавить новое слово, вы можете использовать метод get со значением по умолчанию 0, если слово еще не появилось.

word_count = {}
for w in ["red", "blue", "red", "green"]:
    word_count[w] = word_count.get(w, 0) + 1
print(word_count)

>>> {"red": 2, "blue": 1, "green": 1}

Я думаю, что это самый простой подход, и он должен быть достаточно быстрым, но если вас интересуют другие методы , этот вопрос выходит за рамки реализации tr ie.

Как уже упоминалось в комментариях, неясно, какой метод будет на самом деле быстрее, единственный способ выяснить это - сравнительный анализ. Попробуйте запустить обе реализации много раз для множества значений данных и посмотрите, какая из них работает быстрее!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...