import collections
import os
import pprint
import time

start_time = time.time()
print("creating word list...")
path = os.path.split(os.path.realpath(__file__))
with open(path[0] + "/words") as f:
    word_list = sorted(list({word.strip().lower() for word in f}))


def signature(word):
    return "".join(sorted(word))


word_bysig = collections.defaultdict(list)
for word in word_list:
    word_bysig[signature(word)].append(word)


def anagram(my_word):
    return word_bysig[signature(my_word)]


print("finding anagrams...")
all_anagrams = {word: anagram(word) for word in word_list if len(anagram(word)) > 1}

print("writing anagrams to file...")
with open("anagrams.txt", "w") as file:
    file.write("all_anagrams = ")
    file.write(pprint.pformat(all_anagrams))

total_time = round(time.time() - start_time, 2)
print(("Done [", total_time, "seconds ]"))

Anagrams