Один вопрос почему вам нежен такой сложный алгоритм транслейтера если можно зделать проще?:
def transliter(string):
l_dict = {'a':'а','b':'б','v':'в','g':'г','d':'д','e':'e',
'zh':'ж','z':'з','i':'и','y':'й','k':'к','l':'л','m':'м','n':'н',
'o':'о','p':'п','r':'р','s':'с','t':'т','u':'у','f':'ф','kh':'х',
'ts':'ц','ch':'ч','sh':'ш','shch':'щ','ъ':'','ie':'ы','ь':'','ei':'э',
'yu':'ю','ja':'я'}
translit_string = []
for char in string:
translit_string.append(l_dict[char])
return "".join(translit_string)
print(transliter("opa")