self.children = {}

def __contains__(self, letter):
    return letter in self.children

def get(self, letter):
    return self.children[letter]

def add(self, letters, n=-1, index=0):
    if n < 0:
        n = len(letters)
if index >= n:
    return
letter = letters[index]
if letter in self.children:
    child = self.children[letter]
else:
    child = Node(letter, index == n - 1)
self.children[letter] = child
child.add(letters, n, index + 1)

def load_dictionary(path):
    result = Node()
for line in open(path, 'r'):
    word = line.strip().lower()
result.add(word)
return result
words = load_dictionary('dictionary.txt')
наиболее эффективная структура данных для списка строк только для чтения (около 100 000) с быстрым поиском по префиксу