#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]}]}