Share This
Связаться со мной
Крути в низ
Categories
//Как преобразовать строку в словарь в Python

Как преобразовать строку в словарь в Python

17.01.2023Category : Python

Программистам постоянно приходится преобразовывать различные типы данных, и очень важно делать это правильно. В этой статье мы разберем, как можно преобразовать строку в словарь.

Давайте вкратце припомним, что собой представляют строки и словари. Строка — это коллекция символов, каждый из которых, в принципе, тоже считается строкой, поскольку в Python нет соответствующего символьного типа данных. Словарь в Python хранит данные в виде пар ключ-значение. Ключи в словаре должны быть уникальны.

От редакции Pythonist: подробнее о строках читайте в статье «Строки в Python».

А теперь перейдем непосредственно к преобразованию строк в словари.

Конвертируем строку в словарь

Использование метода json.loads ()

Мы можем преобразовать строку в словарь с помощью функции json.loads(). Чтобы ее использовать, нужно импортировать модуль json.

# Импортировать json import json # Инициализировать строку string = '{"bird1": "Pigeon", "bird2": "Peacock", "bird3": "Eagle", "bird4": "Dove"}' # Вывести строку print("String is ", string) # Преобразовать строку в словарь при помощи json.loads() res_dict = json.loads(string) # Вывести словарь print("The resultant dictionary is ", res_dict)   # Результат: # String is  {"bird1": "Pigeon", "bird2": "Peacock", "bird3": "Eagle", "bird4": "Dove"} # The resultant dictionary is  {'bird1': 'Pigeon', 'bird2': 'Peacock', 'bird3': 'Eagle', 'bird4': 'Dove'}

Сперва мы инициализируем строку, которую затем будем преобразовывать в словарь. Для инициализации используется переменная string. В этой строке содержатся названия разных видов птиц. При помощи оператора print выводим нашу строку.

Далее мы преобразуем строку в словарь при помощи функции json.loads(). В качестве параметра этой функции передается переменная string. Результат работы функции (словарь) мы присваиваем переменной res_dict. Затем при помощи оператора print выводим наш словарь.

Использование метода ast.literal.eval()

Еще одна функция, которую применяют для преобразования строк в словари, — ast.literal.eval(). Чтобы ее использовать, нужно импортировать библиотеку ast.

# Импортировать ast import ast # Инициализировать строку string = '{"game1": "Cricket", "game2": "Football", "game3": "badminton"}' # Вывести строку print("String is ", string) # Преобразовать строку в словарь при помощи ast.literal_eval() res_dict = ast.literal_eval(string) # Вывести словарь print("The resultant dictionary is ", res_dict)   # Результат: # String is  {"game1": "Cricket", "game2": "Football", "game3": "badminton"} # The resultant dictionary is  {'game1': 'Cricket', 'game2': 'Football', 'game3': 'badminton'}

Сначала мы импортируем библиотеку ast. Затем инициализируем строку string, содержащую названия игр. При помощи оператора print выводим нашу строку.

После этого мы конвертируем строку в словарь при помощи функции ast.literal_eval(). В качестве параметра мы передаем ей нашу строку. Результат присваиваем переменной res_dict. После этого снова вызываем оператор print для вывода словаря.

Использование генераторного выражения

Для преобразования строки в словарь можно использовать и генераторное выражение.

# Инициализировать строку string = "Amna - 80, Sara - 100, Javed - 65, Saim - 93, Bilal - 100" # Вывести строку print("String is ", string) # Преобразовать строку в словарь, используя strip() и split() res_dict = dict((a.strip(), int(b.strip()))                 for a, b in (element.split('-')                              for element in string.split(', '))) # Вывести словарь print("The resultant dictionary is ", res_dict) print(type(res_dict))   # Результат: # String is  Amna - 80, Sara - 100, Javed - 65, Saim - 93, Bilal - 100 # The resultant dictionary is  {'Amna': 80, 'Sara': 100, 'Javed': 65, 'Saim': 93, 'Bilal': 100} # <class 'dict'>

Здесь мы инициализируем строку string, в которой будущие пары ключей и значений разделены дефисами и идут через запятую. Наша строка содержит имена студентов и их оценки.

Во вложенном цикле for мы используем строковые функции strip() и split(), чтобы привести пары ключ-значение к нормальному для словаря виду.

Функция split() делит строку на отдельные подстроки, используя в качестве разделителей запятые и дефисы. Функция strip() удаляет пробелы между подстроками. Эта техника не очень эффективна при преобразовании строк, поскольку для получения результата требуется много времени.

В заключение мы распечатали созданный словарь и убедились, что получили именно словарь, выведя его тип.

От редакции Pythonist: о методе split() читайте в статье «Строковые методы split() и join() в Python».

Заключение

В этой статье мы на примерах разобрали три способа преобразовать строку в словарь. Мы сделали это при помощи функции json.loads() из модуля json, функции ast.literal.eval() из модуля ast. Также мы показали, как можно конвертировать строку в словарь при помощи генераторного выражения. Этот способ, пожалуй, самый запутанный, зато позволяет преобразовать в словарь строку, изначально не отформатированную по типу словарных пар ключ-значение.

Перевод статьи Kalsoom Bibi «Python String to a Dict».

  • 0 views
  • 0 Comment

Leave a Reply

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close