Программа создает словарь данных по анализу текста со множеством вложенных ключей, уровней несколько. Допустим, структура такая:
# Результат анализа текста dic = { # Уровень анализа: по словам 'words':{ # Слова из текста с пунктуацией 'p':{ } # Слова из текста без пунктуации 'np':{ } # Число слов 'num':0 } # Уровень анализа: по предложениям 'sents':{ } }
Недавно читал про реактивное программирование, возможно, это оно и есть. Как такое лучше реализовать? Вероятно, подойдут классы вида:
db = {} db['text'] = 'Карл у Клары украл кораллы, а Клара у Карла украла кларнет.' class Analyse: def words(self): if not 'words' in db: db['words'] = {} db['words']['list'] = db['text'].split(' ') db['words']['num'] = len(db['words']['list']) def nf(self): if not 'words' in db: self.words() if not 'nf' in db['words']: db['words']['nf'] = {} db['words']['nf']['list'] = [] for i in range(db['words']['num']): db['words']['nf']['list'].append(db['words']['list'][i].replace('.','').replace('.',',')) db['words']['nf']['num'] = len(db['words']['nf']['list']) return db['words']['nf'] analyse = Analyse() print(analyse.nf()['list'][3])
1) Упростить проверку вложенных ключей?
2) Использовать конструкцию вида analyse.words.nf.3 для доступа к данным / создания данных?
Как вообще такие вещи лучше делать, возможно, без словаря?