KiberCuber
@KiberCuber

Как заменить символ строки на индекс этого символа в массиве?

Мой код: https://pastebin.com/JrPLJEsX
Нужно заменить символ в строке word на его индекс+1 в массиве alpha.
Метод s.replace() вместо замененной строки выдает ту же самую, что я ввел.
Изначально alpha был строкой, но вывод был тем же.
  • Вопрос задан
  • 757 просмотров
Пригласить эксперта
Ответы на вопрос 3
@o5a
Потому что replace не меняет оригинал, а только возвращает измененную строку, т.е. нужно переприсваивать.
Но для подобной замены по словарю (набор значений меняется на другой набор значений) лучше использовать translate (в параметрах передаем пары "символ":"индекс + 1"), без всяких дополнительных циклов.

word = word.translate(str.maketrans({c:str(i+1) for i,c in enumerate(alpha)}))
Ответ написан
Комментировать
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
alpha_map = {c: str(i) for i, c in enumerate(alpha, 1)}
word = input()
new_word = ''.join(f'{idx} ' if idx else orig for idx, orig in ((alpha_map.get(c), c)  for c in word))
print(new_word)
Ответ написан
Комментировать
@Drill
word = ''.join(str(alpha.index(i)+1) for i in word)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы