from collections import defaultdict
def group_anagrams(strs):
anagram_map = defaultdict(list)
for str in strs:
sorted_str = ''.join(sorted(str)) # Sort characters in string
anagram_map[sorted_str].append(str) # Group by sorted string
return list(anagram_map.values())
input_words = ["eat", "tea", "tan", "ate", "nat", "bat", "tae"]
grouped_anagrams = group_anagrams(input_words)
for group in grouped_anagrams:
print(group)
'''
run:
['eat', 'tea', 'ate', 'tae']
['tan', 'nat']
['bat']
'''