Как создать словарь из строки

Нам на курсе дали вот такое задание. Есть строка 'python', надо писать такой код чтобы на выходе получился словарь {1: p, 2: y.....} и так до конца. Использовать библиотеки нельзя.

Я написала вот так код

str1 = "Python"
dic = {}
keys = range(1, 7)
for i in range(0, len(str1)):
    for key in keys:
        dic.update({key: str[i]})
print(dic)

Но оно почему то не работает. Подскажите в чём проблема? Заранее спасибо!!!


Ответы (4 шт):

Автор решения: denisnumb

Можно сделать все куда проще :)

К отдельным буквам строки 'Python' можно обращаться по индексам, как у списков. Например, str1[0] будем иметь значение первой буквы, то есть 'P'

Таким образом, в цикле for от 1 до len(str1)+1 (чтобы нумерация в словаре шла с единицы) заполняем словарь

Но поскольку нумерация символов str1 начинается с 0, в каждой итерации при обращении к отдельной букве нам нужно вычесть 1 из i

str1 = "Python"
dic = {}
for i in range(1, len(str1)+1):
    dic[i] = str1[i-1]
print(dic)

Вывод:

{1: 'P', 2: 'y', 3: 't', 4: 'h', 5: 'o', 6: 'n'}
→ Ссылка
Автор решения: gil9red

Для присваивания индексов к элементам коллекций удобно использовать функцию enumerate:

str1 = "Python"
dic = {i: x for i, x in enumerate(str1, 1)}
print(dic)
# {1: 'P', 2: 'y', 3: 't', 4: 'h', 5: 'o', 6: 'n'}
→ Ссылка
Автор решения: strawdog
str1 = "Python"
dic = dict(enumerate(str1, start=1))
→ Ссылка
Автор решения: Tehnorobot

Я бы сделал так:

str1 = "Python"
dic = {}

for item, value in enumerate(str1):
    # item - индекс значения из строки(счет с 0), value - символ из str1
    dic[item + 1] = value # ключ словаря - индекс + 1, значение ключа - символ строки
print(dic)

Вывод:

{1: 'P', 2: 'y', 3: 't', 4: 'h', 5: 'o', 6: 'n'}
→ Ссылка