# define an alphabet
alfa = "abcdefghijklmnopqrstuvwxyz"
# define reverse lookup dict
rdict = dict([ (x[1],x[0]) for x in enumerate(alfa) ])
print alfa[1] # should print b
print rdict["b"] # should print 1
rdict - это словарь, который создается пошагово по алфавиту, по одному символу за раз.Функция enumerate возвращает кортеж с индексом списка и символом.Мы изменим порядок, создав новый кортеж с таким кодом: ( x[1], x[0])
, а затем превратим список кортежей в словарь.Поскольку словарь представляет собой структуру данных хэш-таблицы (ключ, значение), теперь мы можем искать индекс любого алфавитного символа.
Однако это не то, что вы хотите решить, и если это такзадание класса вы, вероятно, получите 0 за плагиат, если вы отправите его.Для кодирования строк сначала создайте ВТОРОЙ алфавит, который организован так, что alfa2 [n] является закодированной формой alfa [n].В вашем примере второй алфавит будет просто сдвинут на два символа, но вы также можете случайным образом перетасовать символы или использовать какой-либо другой шаблон для их упорядочивания.Все это будет продолжать работать с другими алфавитами, такими как греческий, кириллица и т. Д.