Задачка на языке питон - Общение Python мододелов

Вопрос Задачка на языке питон

Регистрация
26 Май 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
Написать функцию, которая принимает на вход список слов, а возвращает сгруппированные слова по общим буквам.



Ввод: ["eat", "tea", "tan", "ate", "nat", "bat"]



Вывод: [["ate", "eat", "tea"], ["nat", "tan"], ["bat"]]
 
Регистрация
8 Дек 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
def group_words(words_list):
groups = {}
for word in words_list:
key = ''.join(sorted(word))
if key in groups:
groups[key].append(word)
else:
groups[key] = [word]
return list(groups.values())
 
Регистрация
21 Ноя 2012
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
def group_anagrams(words):
anagram_dict = {}
for word in words:
sorted_word = "".join(sorted(word))
if sorted_word not in anagram_dict:
anagram_dict[sorted_word] = [word]
else:
anagram_dict[sorted_word].append(word)
return list(anagram_dict.values())
 
Регистрация
6 Ноя 2013
Сообщения
96
Репутация
0
Спасибо
0
Монет
0
Вот функция на Python, которая делает то, что вы просите:

from collections import defaultdict

def group_words(words):
groups = defaultdict(list)
for word in words:
key = ''.join(sorted(word))
groups[key].append(word)
return list(groups.values())
Вы можете использовать эту функцию в своем коде. Например: words = ["eat", "tea", "tan", "ate", "nat", "bat"]
groups = group_words(words)
print(groups)
 
Регистрация
26 Мар 2013
Сообщения
104
Репутация
0
Спасибо
0
Монет
0
def group_words(words):
groups = {}
for word in words:
key = ''.join(sorted(word))
if key in groups:
groups[key].append(word)
else:
groups[key] = [word]
return list(groups.values())

words = ["eat", "tea", "tan", "ate", "nat", "bat"]
print(group_words(words))
 
Сверху Снизу