【发布时间】:2016-03-18 01:54:20
【问题描述】:
我有一个基本字符串和一个包含某些单词的字典。我想使用字典中的单词找到基本字符串的所有可能的字谜。
例如:
base_string = 'Oscar Wilde'
words = {1: 'sidecar', 2: 'owl', 3: 'low', 4: 'acid', 5: 'bread', 6: 'slower'}
现在我想看看我可以用字典中的单词组成多少不同的字谜。所需的输出将是“sidecar owl”、“sidecar low”、“acid slow”。
我把字符串变成了一个列表,看起来像:
letters = ['o', 's', 'c', 'a', 'r', 'w', 'i', 'l', 'd', 'e']
我希望我的代码能够检查字典中的每个单词组合。我有一个计数器来计算尝试组合的数量。
anagrams = []
counter = 0
for i in range(1, len(words)+1):
anagram = ''
for i in range(i+1, len(words)+1):
if contain(letters, words[i]): #if word is contained in the base string
for i in words[i]: #remove each letter of the word from the list of letters of the base string
letters.remove(i)
anagram += words[i] + ' '
if len(letters) >= 1: #if all the letters are not used, it's not an anagram
counter += 1
if len(letters) == 0: #if all the letters are used, it's an anagram
anagrams.append(anagram)
print anagrams
def contain(list1, list2):
counter1 = Counter(list1)
counter2 = Counter(list2)
for k in counter2:
if counter2[k] != counter1.get(k):
return False
return True
findanagram()
我得到了 anagram += words[i] + ' ' 的 KeyError
我希望我已经足够清楚地解释了自己。
【问题讨论】:
标签: python python-2.7 anagram