如何在给定列表中找到字谜

时间:2016-05-13 21:23:02

标签: python anagram

我正在尝试打印出给定列表中的字谜。我无法得出正确的答案。我想知道我哪里出错了,我该怎么办呢。

words = ['bat', 'rats', 'god', 'dog', 'cat', 'arts', 'star']
sort_words = []
anagrams = []
for word in words:
    word.split()
    word = ' '.join(sorted(word))
    sort_words.append(word)

for i in range(len(sort_words)):
    for j in range(len(sort_words)):
        if sort_words[i] == sort_words[j]:
            anagrams.append(sort_words[i])

print anagrams

3 个答案:

答案 0 :(得分:1)

这是更正后的版本

words = ['bat', 'rats', 'god', 'dog', 'cat', 'arts', 'star']
sort_words = {}
for word in words:
    sort_words[word] = ''.join(sorted(word))

print sort_words
anagrams = []
for i in range(len(words)):
    ana = [words[i]]
    for j in range(i + 1, len(words)):
        if sort_words[words[i]] == sort_words[words[j]]:
            ana.append(words[j])
    if len(ana) != 1:
        anagrams.append(ana)

print anagrams

输出:

[['rats', 'arts', 'star'], ['god', 'dog'], ['arts', 'star']]

答案 1 :(得分:0)

首先,你应该为每个单词添加一个不同的列表,而不是一个带有任意内容的大列表。让我们尝试使用词典:

words = ['bat', 'rats', 'god', 'dog', 'cat', 'arts', 'star']
sort_words = []
anagrams = {}
for word in words:
    word.split()
    word = ''.join(sorted(word))
    sort_words.append(word)

for i in range(len(sort_words)):
    word_anagram = []
    for j in range(len(sort_words)):
        if i == j:
            continue
        if sort_words[i] == sort_words[j]:
            word_anagram.append(words[j])
    anagrams[words[i]] = word_anagram 
print anagrams

输出:

{'bat': [], 'rats': ['arts', 'star'], 'god': ['dog'], 'arts': ['rats','star'], 'dog': ['god'], 'star': ['rats', 'arts'], 'cat': []}

你也忘记了一个重点:通过i == j案件会污染你的结果。

答案 2 :(得分:0)

要在给定列表中查找字谜:

strs=['bat', 'rats', 'god', 'dog', 'cat', 'arts', 'star'] liste=[] 
sonuc=[] 
anagrams=[] 
for i in strs: 
  if sorted(i) not in liste:
    liste.append(sorted(i)) 
for i in range(len(liste)):
  sonuc.append([k for k in strs if sorted (k)==liste[i]]) anagrams.append([i for i in sonuc if len(i)>=2]) 
print(anagrams)
 
[[['rats', 'arts', 'star'], ['god', 'dog']]]