-1

如果我有一个可变单词中的单词列表和一个可变字母中的字母列表,我怎样才能找到可以由字母中的字母组成的 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'
4

2 回答 2

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']
于 2013-02-02T09:13:23.587 回答
-1

用 + 运算符连接单词,然后进行检查。

于 2013-02-02T08:56:52.353 回答