我正在尝试用Python构建一个程序,给定一个单词列表和一个字母列表,它们可以确定字母列表中的7个随机字母可以组成哪些单词。
我有代码显示列表中 all 个可能的单词,列表中的所有字母都是可能的,但是我需要更改它以从列表中选择7个随机字母,然后查看哪个列表中的单词可能会与所选字母组合在一起。
以下是使用所有字母并确定使用哪些字母的代码:
from collections import Counter
words = ['hi','how','are','you']
letters = ['h','i','b', 'a','r','e', 'l', 'y', 'o', 'u', 'x', 'b']
# For every word
for word in words:
# Convert the word into a dictionary
dict = Counter(word)
flag = 1
# For every letter in that word
for key in dict.keys():
# If that letter is not in the list of available letters, set the flag to 0
if key not in letters:
flag = 0
# If the flag remains 1 (meaning all letters in the word are in the letters list), then print the word.
if flag == 1:
print(word)
现在,它可以正确打印所有字母的可能单词,但我希望它从列表中选择7个随机字母并打印可能的单词。
感谢您的帮助。
答案 0 :(得分:1)
Random.sample():
import random as rnd
letters = ['h','i','b', 'a','r','e', 'l', 'y', 'o', 'u', 'x', 'b']
hand = rnd.sample(letters, 7)
然后继续操作。
答案 1 :(得分:0)
您可以使用集合中的计数器来检查是否可以使每个单词都脱离字母:
words = ['hi','how','are','you']
letters = ['h','i','b', 'a','r','e', 'l', 'y', 'o', 'u', 'x', 'b']
from random import sample
from collections import Counter
letterCounts = Counter(sevenLetters)
wordCounts = { word:Counter(word) for word in words }
sevenLetters = sample(letters,7)
possibleWords = [ word for word,wc in wordCounts.items() if not wc-letterCounts ]
print(sevenLetters,possibleWords)
# ['x', 'u', 'h', 'b', 'a', 'i', 'b'] ['hi']
注意:使用Counter()涵盖了多次需要同一字母(例如婴儿)的情况。