如果我在变量字中有一个单词列表,在变量字母中有一个字母列表,我怎样才能找到可以用字母中的字母组成的2个单词的所有连接。字母中的字母每个只能使用一次;但你可以多次列出同一个字母。必须使用所有字母。我想用Python做到这一点。
我有用于从字母中查找单个单词的代码,但是如何更改此代码以找到连接的2个单词:
letters = ['A', 'E', 'H', 'R', 'T']
words = ['DUMMY', 'EARTH']
[w for w in words if sorted(w) == letters]
所以给出
letters = ['A', 'D', 'E', 'H', 'M', 'M', 'R', 'T', 'U', 'Y']
我想找到
'DUMMYEARTH'
答案 0 :(得分:1)
如果您只需要配对:
from itertools import combinations
words = ['DUMMY', 'EARTH']
letters = ['A', 'D', 'E', 'H', 'M', 'M', 'R', 'T', 'U', 'Y']
[w for w in (''.join(c) for c in combinations(words,2))
if sorted(w) == letters]
# ['DUMMYEARTH']
这适用于所有组合:
[w for w in (''.join(c) for i in xrange(len(words)+1)
for c in combinations(words,i))
if sorted(w) == letters]
# ['DUMMYEARTH']
答案 1 :(得分:-1)
使用+运算符连接单词,然后进行检查。