#python #string #function #dictionary
Вопрос:
Правила: В словаре каждый ключ будет словом k, а значение будет представлять собой список индексов входных строк, в которых появляется слово k.
Слова должны рассматриваться только в нижнем регистре. т. е. «Привет» и «Привет» должны рассматриваться одинаково.
можно предположить, что набор данных будет содержать только списки строк. нет необходимости проверять тип элементов в наборе данных.
Строковые данные в наборе данных будут чистыми. не нужно беспокоиться об очистке, т. е. об удалении знаков препинания или цифр.
В приведенном ниже примере функция определяет, каковы индексы слов в данном наборе данных. набор данных-это список, содержащий строки.
Функция reverse_index должна создавать и возвращать словарь.
dataset = [ "Hello world", "This is the WORLD", "hello again" ] res = reverse_index(dataset) # This assertion checks if the result equals the expected dictinary assert(res == { 'hello': [0, 2], 'world': [0, 1], 'this': [1], 'is': [1], 'the': [1], 'again':[2] })
Я не совсем уверен, что делать дальше, но именно так я начал
dataset = [ "Hello world", "This is the WORLD", "hello again" ] def reverse_index(dataset):
Комментарии:
1. Выполните итерацию по набору данных, установите каждую строку в нижний регистр, разделите ее на отдельные слова, добавьте ее в результат с соответствующим значением или добавьте к значению, если ключ уже есть. Если у вас есть конкретная проблема при решении этой проблемы самостоятельно, вы можете задать ее здесь со своим кодом.
Ответ №1:
Вы можете использовать collections.defaultdict
в качестве основы и небольшую петлю:
from collections import defaultdict res = defaultdict(list) for i,s in enumerate(dataset): for w in set(map(str.lower, s.split())): res[w].append(i) dict(res)
выход:
{'hello': [0, 2], 'world': [0, 1], 'is': [1], 'the': [1], 'this': [1], 'again': [2]}
Ответ №2:
Вы можете попробовать этот метод
def reverse_index(data): res = dict() for i in range(len(data)): for word in map(str.lower,data[i].split()): if word not in res: res[word] = [i,] else: res[word].append(i) return res
выход:
{ 'hello': [0, 2], 'world': [0, 1], 'this': [1], 'is': [1], 'the': [1], 'again':[2] }