Эффективный способ узнать, возможно ли создать слово из списка, используя слова из другого списка - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть два списка, один из которых Ожидаемые_объекты , а другой - извлеченные слова . Списокpected_entities состоит из строк, каждая из которых может содержать несколько слов или одно слово. В то время как список extract_words содержит строки с отдельными словами. Мне нужно выяснить, можно ли построить любой Ожидаемый объект из ожидаемого объекта с использованием нескольких или отдельных записей из извлеченных слов.

Например,

expected_entities = {"hello joe", "hi julie", "hola sam", "paul"}
extracted_words = {"hello", "hi", "hola", "sam"}

Мой код должен возвращать hola sam в качестве вывода.

В настоящее время мое решение выглядит так:

def my_method(expected_entities, extracted_words):
    for expected_entity in expected_entities:
        words = expected_entity.split()
        if set(words) < set(extracted_words):
            return expected_entity

Я хотел бы знать, может ли быть лучшее решение для достижения того же самого, это, кажется, не работает нормально.

Примечание. Предположим, что данные будут такими, что из извлеченных слов может быть создан только один ожидаемый объект.

1 Ответ

0 голосов
/ 26 апреля 2018

Пока не очень эффективно, но это сделает работу.

expected_entities = {"hello joe", "hi julie", "hola sam", "paul"}
extracted_words = {"hello", "hi", "hola", "sam"}

def my_method(expected_entities, extracted_words):
    for expected_entity in expected_entities:
        words = expected_entity.split()
        if all(word in extracted_words for word in words):
            return expected_entity

my_method(expected_entities, extracted_words)

# 'hola sam'
...