Параметр представляет собой список слов. Требуемый вывод списка сгруппированных анаграмм.
def anagrams(lst):
d = {}
while len(lst) > 0:
pop = lst.pop()
d[pop] = d.get(pop, [])
d[pop].append(pop)
for word in lst:
perm = [''.join(p) for p in permutations(pop)]
if word in perm:
d[pop].append(word)
lst.remove(word)
anagram = d.values()
return list(anagram)
print(anagrams(['eat', 'ate', 'done', 'tea', 'soup', 'node']))
--- Консольный вывод ... (неправильный вывод) ---
[['node', 'done'], ['soup'], ['tea', 'eat'], ['ate']]
--- Желаемый вывод ---
[['eat', 'ate', 'tea], ['done', 'node'], ['soup']]
Вещи, которые я пробовал Мой псевдокод, когда pop = 'tea' в то время как l oop
pop = ‘tea’
lst = [‘eat’,’ate’]
for ‘eat’ in lst:
perm = perm of [tea]
if eat in perm (true)
d[tea].append(‘eat’) # d[tea] = [tea, eat]
lst = [‘ate’]
for ‘ate’ in lst:
perm = perm of [tea]
if ‘ate’ in perm: (should be yes)
d[tea].append(ate) -> d[tea] = [tea, eat, ate]
lst.remove['ate'] -> lst = []
Это не так