В настоящее время я пытаюсь создать индекс слов, прочитывая каждую строку из текстового файла и проверяя, находится ли это слово в этой строке. Если это так, он печатает цифровую строку и продолжает проверку. Я работал над тем, как я хотел, когда печатал каждое слово и номер строки, но я не уверен, какую систему хранения я мог бы использовать, чтобы содержать каждый номер.Создание индекса слов
Пример кода:
def index(filename, wordList):
'string, list(string) ==> string & int, returns an index of words with the line number\
each word occurs in'
indexDict = {}
res = []
infile = open(filename, 'r')
count = 0
line = infile.readline()
while line != '':
count += 1
for word in wordList:
if word in line:
#indexDict[word] = [count]
print(word, count)
line = infile.readline()
#return indexDict
Это печатает слово и независимо от количества которое в то время (номер строки), но то, что я пытаюсь сделать, это сохранить номера, так что позже я могу сделать распечатать
word linenumber
word2 linenumber, linenumber
И так далее. Я чувствовал, словарь будет работать для этого, если я ставлю каждый номер строки внутри списка, так что каждый ключ может содержать более одного значения, но ближайший я получил это:
{'mortal': [30], 'dying': [9], 'ghastly': [82], 'ghost': [9], 'raven': [120], 'evil': [106], 'demon': [122]}
Когда я хотел, чтобы показать, как :
{'mortal': [30], 'dying': [9], 'ghastly': [82], 'ghost': [9], 'raven': [44, 53, 55, 64, 78, 97, 104, 111, 118, 120], 'evil': [99, 106], 'demon': [122]}
Любые идеи?
Возможно, вам нужен defaultdict по умолчанию для [new] и добавление. Разумеется, ваша прокомментированная строка просто перезаписывает ключ с 1-позиционным списком каждый раз. – geoffspear
Для всех, кто ответил, благодарю вас за ввод. Это было очень оценено. – iKyriaki