Ошибка в понимании list / dict в python для номера перевода в строку - PullRequest
0 голосов
/ 17 октября 2019

Учитывая

letters = "abcdefghijklmnopqrstuvwxyz"

Я хочу перевести этот список чисел в строку текста:

numbers = [8, 5, 12, 12, 15, 23, 15, 18, 12, 4]

Идея состоит в том, что число 7 представляет букву в 7-й буквеалфавита. Это означает, что 1 соответствует «а», поскольку это 1-я буква.

Я написал следующий код:

letters = "abcdefghijklmnopqrstuvwxyz"

numbers = [8, 5, 12, 12, 15, 23, 15, 18, 12, 4]

text = ''.join([{i: c for i, c in enumerate(letters)}[x] for x in numbers])

Это хорошо? Есть ли ошибки? Если да, то где?

Ответы [ 4 ]

1 голос
/ 17 октября 2019

Попробуйте,

>>> letters = "abcdefghijklmnopqrstuvwxyz"

>>> numbers = [8, 5, 12, 12, 15, 23, 15, 18, 12, 4]

 >>> "".join((letters[n-1] for n in numbers))

'helloworld'
0 голосов
/ 18 октября 2019

В Python индексация начинается с 0, индекс A равен 0, B равен 1 ... и т. Д. Так что если вы хотите напечатать J, индекс будет 9.

letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
numbers = [8, 5, 12, 12, 15, 23, 15, 18, 12, 4]
word = "".join(letters[num-1] for num in numbers) # getting letters with index -1
print(word)

Вывод: HELLOWORLD

0 голосов
/ 17 октября 2019

В Python список с индексом на основе 0. letters[7-1] дает вам седьмую букву алфавита.

Кроме того, вам не нужно использовать перечисление или словарь.

letters = "abcdefghijklmnopqrstuvwxyz"
numbers = [8, 5, 12, 12, 15, 23, 15, 18, 12, 4]
text = ''.join(letters[n-1] for n in numbers)
print(text)
# helloworld
0 голосов
/ 17 октября 2019

Нет необходимости в словаре или перечислении. Просто используйте индекс элементов в строке letters.

text = ''.join([letters[n-1] for n in numbers])
...