在python中的单个单词列表中搜索多个单词字符串

时间:2019-06-06 22:44:10

标签: python

我有一个单词列表,这些单词存储在set()中以便快速查找,例如:

one
two
three

我想搜索是否可以通过使用字典中的单词来写给定的字符串(即“一个三”)(这将是一个多词字谜) 实现此目的的第一个想法是创建一个新的单词表,例如:

one
two
three
one two
one three
two three

要查找匹配的字符串,我发现这种方法存在一些缺陷:

  • 如果我决定创建三个单词组合,则生成的单词列表将非常庞大。
  • 创建单词列表的最佳方法

最后,提出的解决方案(感谢@all)是拆分多字字符串,并查看每个成员是否在单词列表中。

2 个答案:

答案 0 :(得分:3)

如果您的单词是固定的,则查找为固定时间。无需对单词进行所有排列。使用一组单词列表,您可以将字符串拆分成单词,然后检查所有单词是否在该集中:

words = {'one', 'two','three'}

sentence = "one two two three"
all(s in words for s in sentence.split())  
# True

sentence = "one two two three four"
all(s in words for s in sentence.split())
# False

答案 1 :(得分:0)

如果将单词的所有组合存储在集合中,则该集合很可能会指数增长,而不会提供太多价值。要检查是否可以使用集合中的单词来制作特定的字符串,我们应该在运行时检查字符串中的每个单词:

def words_in_set(my_str, words_set):
    words = my_str.split()
    return all(word in words_set for word in words)