Где ошибка в коде замены символов строки по словарю?
Вообще - эта задача в Python так решается:
x = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ !:.,-"
y = "ГЗЩПБОФЪШЭАУЯЙЦДЮКНЕЖМТВСРЧЛЫИЬХ !:.,-"
my_table = str.maketrans(x, y)

text ='БЫЛ'
text.translate(my_table)

'ЗЛУ'
Сделайте
for keys in text:
    text = text.replace(keys, str(d[keys]))
    print(text)
увидите, что получили 
1.БЫЛ -> ЗЫЛ
2. ЗЫЛ -> ЗЛЛ
Ну и на третьем этапе все Л заменяются на У