Форум сайта python.su
4
Добрый день. У меня вот такой вопрос.
Программа создает словарь данных по анализу текста со множеством вложенных ключей, уровней несколько. Допустим, структура такая:
# Результат анализа текста 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])
Отредактировано vanvanov (Апрель 2, 2016 02:12:16)
Офлайн
568
vanvanovВероятно, вам поможет доступный из стандартной библиотеки питона defaultdict.
если ключ есть, то возвращать его, а если нет - создавать.
d = defaultdict(list) d["sdsd"].append("dsd") f = defaultdict(dict) f["sdsd"]["ssss"] = "ssss" c = defaultdict(lambda x: .......)
Офлайн