Python - 将字符列表与单词列表进行比较?

4
我建立了一个程序,随机生成8个字母并将它们分配到一个名为ranlet(即随机字母)的列表中。然后将一个.txt文件导入到名为wordslist的列表中。这两部分都运行良好,因为我已经分别测试了这些部分,但是接下来出现了问题。
程序必须比较ranlet列表和wordslist列表,将匹配单词添加到名为hits的列表中,并显示hits列表中的单词。
我尝试了以下代码:
for each in wordslist:
    if ranlet==char in wordslist:
        hits.append(wordslist)
    else:
        print "No hits."

print hits

很遗憾,这个方法没有起作用。我已经尝试了很多变化,但都没有成功。非常感谢您能提供任何有关此事的帮助。


3
展示示例数据、输入和输出。展示示例数据、输入和输出。 - Marcin
1
听起来像是一个类似于Scrabble、Words With Friends或其他类型的代码。也许你应该搜索一下Python Scrabble实现,看看那里都做了什么。 - Inbar Rose
你需要澄清一些事情:当你说“匹配的单词”时,是指1)至少包含一个来自于ranlet的字母的单词吗?2)所有8个字母都来自于ranlet的单词吗?3)所有8个字母都来自于ranlet且按顺序排列的单词吗?4)仅使用ranlet字母且没有其他字母的单词吗?5)对于何谓“匹配”,还有其他规则吗? - Stobor
2个回答

3

我认为你可以在这里受益于set.intersection

set_ranlet = set(ranlet)
for word in word_list:
    intersection = set_ranlet.intersection(word)
    if intersection:
        print "word contains at least 1 character in ran_let",intersection

    #The following is the same as `all( x in set_ranlet for x in word)`
    #it is also the same as `len(intersection) == len(set_ranlet)` which might
    # be faster, but less explicit.
    if intersection == set_ranlet: 
        print "word contains all characters in ran_let"

请告诉我如何改进这个问题,我很乐意进行更新 :) - mgilson

2

如果你是新手,学习 Python 可以很容易理解:

hits = []
for word in wordslist:
    if word in ranlet and word not in hits:
        hits.append(word)
print hits

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接