Позвольте мне иметь следующий класс в Python:
class Word:
def __init__(self, _lemma, _frequency):
self.lemma = str(_lemma)
self.frequency = int(_frequency)
Теперь я хочу создать коллекцию класса Word
, которая содержит следующую логику при добавлении Word
объекта word1
в коллекцию:
- , если коллекция содержит
Word
объект word
, где word.lemma = word1.lemma
, тогда word.frequency = word.frequency + word1.frequency
- еще добавить
word1
в коллекцию
Как я могу это сделать?
Ранее я использовал для этого список, где я проверял, содержит ли список объект Word
, который имеет lemma
с word1.lemma
. Но у подхода есть O (n ^ 2) сложность, чтобы добавить n word
в коллекцию.
from Word import Word
class Corpus:
def __init__(self, _name, _total_count):
self.name = str(_name)
self.total_count = int(_total_count)
self.words = []
def add(self, _word):
find_word = [index for index, word in enumerate(self.words) if word.lemma == _word.lemma] # O(n)
if len(find_word) == 0:
self.words.append(Word(_word.lemma, _word.frequency))
else:
self.words[find_word[0]].frequency = self.words[find_word[0]].frequency + _word.frequency