Как создать словарь из строки
Нам на курсе дали вот такое задание. Есть строка '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 шт):
Можно сделать все куда проще :)
К отдельным буквам строки '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'}
Для присваивания индексов к элементам коллекций удобно использовать функцию 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'}
Я бы сделал так:
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'}