Как превратить строку в словарь python
Словари в Python это структура данных вида «ключ-значение». То есть чтобы перевести строку в словарь, надо хотя бы описать условие что будет ключами, а что значениями.
Например, если мы хотим ключами сделать символы, а значениями их количество в строке, то можно воспользоваться Counter
from collections import Counter s = 'Hello, World!' Counter(s) # Counter()
Как создать словарь из строки
Для присваивания индексов к элементам коллекций удобно использовать функцию enumerate :
str1 = "Python" dic = print(dic) #
Отслеживать
ответ дан 20 авг 2021 в 13:02
76.7k 6 6 золотых знаков 54 54 серебряных знака 120 120 бронзовых знаков
В питоне походу при желании можно вообще любой код написать в одну строчку))
20 авг 2021 в 13:04
@denisnumb, 😀 В ответе strawdog еще проще сделано 🙂
20 авг 2021 в 13:05
Первый раз работаю с функцией enumerate. Спасибо за помощь!
20 авг 2021 в 13:23
@python_prog, пожалуйста 🙂
20 авг 2021 в 13:31
Я бы сделал так:
str1 = "Python" dic = <> for item, value in enumerate(str1): # item - индекс значения из строки(счет с 0), value - символ из str1 dic[item + 1] = value # ключ словаря - индекс + 1, значение ключа - символ строки print(dic)
Отслеживать
ответ дан 20 авг 2021 в 13:06
Tehnorobot Tehnorobot
2,140 1 1 золотой знак 4 4 серебряных знака 13 13 бронзовых знаков
У меня почему-то цикл for с двумя аргументами не работала, но наверное у меня другая ошибка была, сейчас всё работает. Спасибо!
20 авг 2021 в 13:26
@python_prog наверно, просто, enumerate пропустили.
20 авг 2021 в 13:28
Можно сделать все куда проще 🙂
К отдельным буквам строки ‘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)
Вывод:
Отслеживать
ответ дан 20 авг 2021 в 12:54
5,573 2 2 золотых знака 10 10 серебряных знаков 35 35 бронзовых знаков
Спасибо вам большое. Очень помогли! Не додумалась написать dic[i] = str1[i-1]. ☺
20 авг 2021 в 12:59
Кст, думаю, действительно лучше range(len(str)) , а вот в ключ записывать с +1
20 авг 2021 в 13:06
Да, пожалуй так
20 авг 2021 в 13:09
- python
- python-3.x
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Создать словарь из строки по условию
Создайте словарь из строки «pythonist» следующим образом: в качестве ключей
используйте символы строки, а в качестве значений — количество вхождений данного
символа.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как из строки создать словарь
Здравствуйте! Как из строки создать словарь?
Создать словарь словарей из строки
Есть словарь dictFullDataParse. Нужно из приходящей строки создать подсловари и положить в самый.
Как из каждой строки файла создать отдельный словарь?
Прошу помочь в таком вопросе: есть несколько строк в файле, каждая вида: "XXXX, key, value". Нужно.
По квадратной матрице создать ступенчатый массив, содержащий 4 строки. Каждая строки создаётся по своему условию
Дан двумерный массив размером N*N, заполненный целыми числами. Сформировать ступенчатый массив.
Можно ли создать словарь в словаре и чтобы каждый словарь вызывался по ключу?
Ребят, всем привет) Подскажите, можно ли создать словарь в словаре? Например, пишу рецепт торта.
Задача на словари — из строки сделать словарь
Доброго времени суток
Задание:
Вводятся номера телефонов в одну строчку через пробел с разными кодами стран: +7, +6, +2, +4 и т.д. Необходимо составить словарь d, где ключи — это коды +7, +6, +2 и т.п., а значения — список номеров с соответствующими кодами. Полученный словарь вывести командой:
print(*sorted(d.items()))
Sample Input:
+71234567890 +71234567854 +61234576890 +52134567890 +21235777890 +21234567110 +71232267890
Sample Output:
(‘+2’, [‘+21235777890’, ‘+21234567110’]) (‘+5’, [‘+52134567890’]) (‘+6’, [‘+61234576890’]) (‘+7’, [‘+71234567890’, ‘+71234567854’, ‘+71232267890’])
Моя попытка решения:
Кликните здесь для просмотра всего текста
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
input_ = list(input().split()) d1 = sorted(input_) d2 = d1.append('No--') d3 = [d1[i][0] + d1[i][1] for i in range(len(d1)-1) if d1[i][1] != d1[i+1][1]] d4 = [[d1[i] for i in range(len(d1))]for j in range(len(d3))] for i in range(len(d4)): for j in range(len(d1)): if d4[i][j][0] + d4[i][j][1] != d3[i]: d4[i][j] = 0 d5 = [] for i in range(len(d4)): r = [] for j in range(len(d1)): if d4[i][j] != 0: r.append(d4[i][j]) d5.append(r) for i in range(len(d5)): d5[i] = sorted(d5[i],reverse = True) d = dict(zip(d3, d5)) print(*sorted(d.items()))
Вопрос: Можете подсказать, что не так с кодом. Понимаю, что такая постановка вопроса не вызывает желания помочь. Но я уже не знаю в чем проблема. Наведите на мысль)