Если рекурсия, как вы подразумеваете, ваш выбор , а не требование , то вы делаете это сложнее, чем необходимо, так как Python имеет встроенные функции для этого:
matrix = {'a': 'FIRST VOWEL', 'e': 'SECOND VOWEL', 'i': 'THIRD VOWEL'}
alphabet = "abcdefghijklmn"
translation_table = str.maketrans(matrix)
print(alphabet.translate(translation_table))
ВЫХОД
> python3 test1.py
FIRST VOWELbcdSECOND VOWELfghTHIRD VOWELjklmn
>
Или мы могли бы просто сделать:
matrix = {'a': 'FIRST VOWEL', 'e': 'SECOND VOWEL', 'i': 'THIRD VOWEL'}
alphabet = "abcdefghijklmn"
for old, new in matrix.items():
alphabet = alphabet.replace(old, new)
print(alphabet)
ВЫХОД
> python3 test2.py
FIRST VOWELbcdSECOND VOWELfghTHIRD VOWELjklmn
>
Или если должен быть рекурсивным, то, возможно, что-то вроде:
matrix = {'a': 'FIRST VOWEL', 'e': 'SECOND VOWEL', 'i': 'THIRD VOWEL'}
alphabet = "abcdefghijklmn"
def replace_vowels(string):
def replace_vowels_recursive(string, dictionary):
if dictionary:
(vowel, replacement), *rest = dictionary.items()
return replace_vowels_recursive(string.replace(vowel, replacement), dict(rest))
return string
return replace_vowels_recursive(string, matrix)
print(replace_vowels(alphabet))
ВЫХОД
> python3 test3.py
FIRST VOWELbcdSECOND VOWELfghTHIRD VOWELjklmn
>