word = "Demo Deer Deep Deck Cere Reep Creep Creeps"
split_word = word.split()
from itertools import combinations
letters = {s for it in split_word for s in it.lower()}
out = dict()
for n in range(len(letters)):
out[n] = {''.join(letters_subset): [word
for word in split_word
if set(word.lower()).issubset(letters_subset)]
for letters_subset in combinations(letters, n)}
out[n] = {k: v for k, v in out[n].items() if len(v) > 0}
# Print output
for n, d in out.items():
for k, v in d.items():
print('{}:\t{}\t{}'.format(n, k, v))
我想你需要分几步来完成。在
首先,你需要弄清楚你的字母集是什么。你可以使用整个字母表,但如果你能避免的话,我建议你不要这样做。我试着用一套:
接下来,您需要迭代池中四个字母的所有组合,并检查哪些单词可以用它们组成。这就是为什么最好不要使用整个字母表;这是很多组合。在下面的示例中,我将结果存储在由字母组合键控的字典中,但是您可以根据需要修改它。在
^{pr2}$注意
for-else
语法;这意味着如果循环没有中断,else
子句中的代码将执行。基本上,对于给定的字母组合,此代码检查每个单词并确定它是否仅由这些字母组成。如果是,它会存储这些信息。如果一个给定的组合不构成任何单词,那么它在字典中的条目将被删除(以节省内存)。请注意,这是一个相当幼稚的解决方案,不能很好地扩展。在如果要打印结果,可以执行以下操作:
您可以使用sets和itertools.combinations来实现这一点:
相关问题 更多 >
编程相关推荐