Условия задачи:

 

Словарный индекс. Напишите программу, которая читает содержимое текстового фай­ла. Программа должна создать словарь, в котором пары "ключ : значение" описаны сле­дующим образом:
•ключ -ключами являются отдельные слова в файле;
•значение - каждое значение является списком, который содержит номера строк в файле, где найдено слово (ключ).
Например, предположим, что слово "робот" найдено в строках 7, 18, 94 и 138. Словарь будет содержать элемент, в котором ключом будет строковое значение "робот", а значе­нием -список, содержащий номера 7, 18, 94 и 138.
После создания словаря программа должна создать еще один текстовый файл, называе­мый словарным индексом, в котором приводится содержимое словаря. Словарный индекс должен содержать список слов в алфавитном порядке, хранящихся в словаре 
в качестве ключей, и номера строк, в которых эти слова встречаются в исходном файле.
 

Решение задачи:

file ='Kennedy.txt'
with open(file, 'r') as file_out:
    file_list = [i.rstrip() for i in file_out]
file_list1=[]
for i in file_list:
    i = i.split()
    for c in i:
        file_list1.append(c)
unic_word = set(file_list1)
dict_word = {}
index_list = []
for i in unic_word:
    index_list = []
    for c in file_list:
        for x in c.split():
            if x == i:
                index_list.append(file_list.index(c)+1)
                break
    dict_word[i] = index_list
with open('Kennedy1.txt', 'w') as out_file:
    for i in sorted([x for x in dict_word]):
        out_file.write(f'{i} : {dict_word[i]}'  + '\n')