I am writing a cypher and I've assigned numerical values to every letter in the alphabet, alphabet_dictionary = {'a': 0, 'b': 1, 'c': 2,... etc.}
.
I first convert the letter in message
to numbers, do some arithmetic and store those numbers in a variable named code
.
I want to convert them back to letters.
So far I have:
for number in code:
for letter, value in alphabet_dictionary.items():
if value == number:
coded_message.append(letter)
This works. I end up with a the correct coded message inside my coded_message
list. Is there is something better or more efficient?
Why can't I do that in a single line? I first tried using:
for number in code:
coded_message.append(letter for letter, value in alphabet_dictionary.items() if value == number)
but that only appends the memory allocation address for the individual characters for example:
`[<generator object <genexpr> at 0x1011bb240>, <generator object <genexpr> at 0x1011bb1f8>, <generator object <genexpr> at 0x1011bb288>, <generator object <genexpr> at 0x1011bb2d0>, <generator object <genexpr> at 0x1011bb318>, <generator object <genexpr> at 0x1011bb360>, <generator object <genexpr> at 0x1011bb3a8>]'
Why is this happening?