import pprint, time def getWordPattern(word): word = word.upper() nextNum = 0 letterNums = {} wordPattern = [] for letter in word: if letter not in letterNums: letterNums[letter] = str(nextNum) nextNum += 1 wordPattern.append(letterNums[letter]) return ".".join(wordPattern) def main(): startTime = time.time() allPatterns = {} with open("Dictionary.txt") as fo: wordList = fo.read().split("\n") for word in wordList: pattern = getWordPattern(word) if pattern not in allPatterns: allPatterns[pattern] = [word] else: allPatterns[pattern].append(word) with open("Word Patterns.txt", "w") as fo: fo.write(pprint.pformat(allPatterns)) totalTime = round(time.time() - startTime, 2) print(("Done! [", totalTime, "seconds ]")) if __name__ == "__main__": main()