Создание вложенного словаря на Python

#python #list #dictionary #nlp

Вопрос:

У меня есть словарь на Python, и в настоящее время он выглядит так:

 {'apple': ['file1.txt', 'file2.txt', 'file3.txt'], 'banana': ['file1.txt', 'file2.txt'], 'carrot': ['file3.txt'],.....................................}  

У меня есть содержимое каждого файла, хранящееся в списке списков, который содержит слова из этого файла, а также общий список используемых файлов:

 [['hello', 'apple', 'test', 'banana'], ['weird', 'apple', 'tester', 'banana', 'apple'],........]]  ['file1.txt', 'file2.txt', .....]  

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

Например: я хотел print(dictionary['apple']) бы вернуться [{'file1.txt': [1]}, {'file2.txt': [1,4]},...... ] (он сообщает мне документ, в котором он отображается, И его положение в этом документе)

Мой существующий код для создания словаря, который у меня уже есть, таков:

  dict = {} for i in range(len(textfile_list)): #list of textfiles used  check = file_contents #contents of file in form [['word1',..],['word2','wordn',...]]  for item in words:#a list of every word from every file ['word1','wordn','word3',...]    if item in check:  if item not in dict:  dict[item] = []    if item in dict:  dict[item].append(textfile_list[i])  dict = {k: list(set(v)) for k, v in dict.items()}  

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

Комментарии:

1. Привет, можете ли вы опубликовать то, что вы пробовали до сих пор?

2. @j1-ли n как в n-м слове

Ответ №1:

Я мог бы организовать ваш рабочий процесс следующим образом. Используйте это как источник вдохновения:

 content = [['hello', 'apple', 'test', 'banana'], ['weird', 'apple', 'tester', 'banana', 'banana', 'apple']] files = ['file1.txt', 'file2.txt'] index = {k:v for k, v in zip(files, content)} words = set([word for words in index.values() for word in words]) expected_dict = {} for word in words:  expected_dict[word]=[]  for key, value in index.items():  if word in value:  expected_dict[word].append({key:[idx for idx in range(len(value)) if value[idx]==word]})  

выход:

 {'test': [{'file1.txt': [2]}],  'apple': [{'file1.txt': [1]}, {'file2.txt': [1, 5]}],  'banana': [{'file1.txt': [3]}, {'file2.txt': [3, 4]}],  'tester': [{'file2.txt': [2]}],  'hello': [{'file1.txt': [0]}],  'weird': [{'file2.txt': [0]}]}