Итак, у меня есть словарь, который был создан путем чтения файла и создания ключа для каждого слова, найденного в этом файле, со значением, представляющим собой набор номеров строк, в которых встречается слово. Вот пример словаря из файла.
{'we': {4}, 'created': {4}, 'into': {2}, 'cant': {6}, 'imagination': {3}, 'with': {4}, 'nature': {2}, 'genius': {7}, 'gravity': {6}, 'of': {1, 3, 5}, 'rather': {1}, 'has': {7}, 'difference': {7}, 'try': {1}, 'better': {2}, 'used': {4}, 'value': {1}, 'between': {7}, 'blame': {6}, 'problems': {4}, 'is': {3, 7}, 'everything': {2}, 'not': {1, 3}, 'to': {1}, 'intelligence': {3}, 'thinking': {4}, 'them': {4}, 'deep': {2}, 'become': {1}, 'falling': {6}, 'for': {6}, 'character': {5}, 'when': {4}, 'will': {2}, 'solve': {4}, 'limits': {7}, 'same': {4}, 'weakness': {5}, 'and': {2, 7}, 'but': {1, 3}, 'love': {6}, 'knowledge': {3}, 'understand': {2}, 'then': {2}, 'man': {1}, 'our': {4}, 'attitude': {5}, 'in': {6}, 'the': {3, 4, 7}, 'that': {7}, 'sign': {3}, 'look': {2}, 'stupidity': {7}, 'cannot': {4}, 'its': {7}, 'true': {3}, 'success': {1}, 'becomes': {5}, 'you': {2, 6}}
Что мне нужно сделать, так это взять введенные пользователем слова, разделенные пробелами (которые я сделал в списке), и найти в словаре пересечение строк, на которых они все находятся. Например, если пользователь вводит «the», он вернет 3, 4, 7, а если он введет «the is», вернет 3, 7.
Вот что я придумал до сих пор, просто пытаясь заставить его работать на 1 слово:
inp_lst = inp_str.strip().split()
print("The co-occurance for: " + ", ".join(inp_lst))
for word in inp_lst:
word = word.strip().strip(string.punctuation).lower()\
.replace("'","").replace("-","")
if word in D:
word_set = D[word]
else:
return None
cooccurance_lst = list(word_set)
return cooccurance_lst.sort()
И все, что я пытаюсь, возвращает None.
inp_str.strip().split()
.string.split()
, вызванный без аргументов, разбивает строку на каждый символ, поэтому"the".split()
возвращает["t", "h", "e"]
. Попробуйте исправить это в качестве первого шага. - person DW42   schedule 11.04.2017inp_str.strip().split(" ")
, который разделит строку на каждый пробел, поведение, которое, как я полагаю, вам нужно. - person DW42   schedule 11.04.2017>>> "the".split() -> ['the']
, вы, наверное, думаете оlist("the")
. Если разделитель дляstr.split
не указан, по умолчанию используется пробел. - person Steven Summers   schedule 11.04.2017.split()
и.split('')
(которые сейчас могут обесцениться) не проверив. - person DW42   schedule 11.04.2017cooccurance_lst.sort()
вернетNone
, поскольку вы сортируете на месте, вам нужно будет отсортировать, а затем вернуть илиreturn sorted(cooccurance_lst)
- person Steven Summers   schedule 11.04.2017