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()