Как из строки сделать словарь python
Перейти к содержимому

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

  • автор:

Как превратить строку в словарь 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()))

Вопрос: Можете подсказать, что не так с кодом. Понимаю, что такая постановка вопроса не вызывает желания помочь. Но я уже не знаю в чем проблема. Наведите на мысль)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *