Как из строки сделать словарь python
Interconversions of data types have been discussed many times and have been quite a popular problem to solve. This article discusses yet another problem of interconversion of the dictionary, in string format to a dictionary. Let’s discuss certain ways in which this can be done.
Method #1: Using json.loads()
This task can easily be performed using the inbuilt function of loads of json library of python which converts the string of valid dictionary into json form, dictionary in Python.
Python3
Time complexity: O(1) as it’s a single function call to json.loads that takes a string as input and returns a dictionary.
Auxiliary space: O(n), where n is the length of the input string. This is because the returned dictionary takes space proportional to the length of the input string.
Method #2: Using ast.literal_eval()
The above method can also be used to perform a similar conversion. Function safer than the eval function and can be used for interconversion of all data types other than dictionary as well.
Как из строки получить словарь (из str в dict)?
Такой вариант не канает, так как в словаре есть ‘address’, а в нем есть запятые, соотвествено этот метод пытаеться порезать значение на ключи и значения:
Так же не помогает:
Жду помощи ребяты
- Вопрос задан более трёх лет назад
- 15354 просмотра
Простой 2 комментария
- Вконтакте



- Вконтакте




Все указанные решения работают в некоторых частных случаях и могут сломаться в любой момент.
В общем случае, нет стандартного способа получить строку в указанном топикстартером виде и синтаксис он не указал, поэтому я предполагаю, что это результат какой-то разрушающей операции типа str от питоновского объекта. Если речь идёт действительно об str, то он вполне способен сгенерировать довольно разные строки, которые будут ломать любой из указанных способов.
Например, вариант с ремлейсом ломается если внутри уже есть кавычки. Вариант с эвалом не стоит советовать, так как на определенных данных он может привести к исполнению стороннего кода. Вариант с literal_eval сломается на сложных объектах (а так как мы не знаем, как автор получил свою строку, можно допустить, что там может быть что угодно)
Строка Python в Dict

Программирование и разработка
В Python преобразование разных типов данных — обычная проблема, и очень важно делать это правильно. Словарь — это тип данных, который сохраняет информацию / элементы в виде пары. Во время программирования важно преобразовать строковый тип данных в тип данных словаря. Однако, прежде чем перейти к методам преобразования, позвольте мне объяснить строки и словари.
Строка — это последовательность элементов в Python. Это неизменяемо. Элементы или элементы заключаются в одинарные и двойные кавычки. Поскольку Python не имеет правильного символьного типа данных. Однако любой символ также рассматривается в Python как строка.
В Python словарь по сути представляет собой набор изменяемых элементов данных. Эта коллекция присутствует в неупорядоченном виде. Словари сохраняют данные, в которых каждый элемент представлен в виде пары. Элементы внутри скобок представлены в виде пар, и каждая пара отделяется запятой. Но элементы выделяются двоеточием.
Главный атрибут словаря в том, что он не приемлет полиморфизм. Мы можем получить данные из словаря позже, указав соответствующее имя ключа. Давайте обсудим методы преобразования строки в словарь.
Используйте метод json.loads ()
В Python строка преобразуется в словарь с помощью функции json.load (). Это встроенная функция. Мы должны импортировать эту библиотеку, используя слово «импорт» перед этой функцией. Для реализации мы используем программное обеспечение «spyder» версии 5. Для нового проекта мы создаем новый файл, нажимая опцию «новый файл» в строке меню. Теперь приступим к кодированию.
Мы инициализировали строку, которую нужно преобразовать. Для инициализации используется переменная string. Здесь мы берем в цепочку названия разных птиц. Затем мы вызываем оператор печати, чтобы вернуть имена птиц.

Применяем функцию json.load (). Эта функция содержит параметр. Переменная string передается как параметр этой функции. В последнем случае оператор печати возвращает окончательный словарь после преобразования. Теперь нам нужно запустить этот код. Мы нажимаем на опцию «запустить» в строке меню Spyder.

Первый оператор печати возвращает имена 4 птиц. Эта строка преобразуется в словарь с помощью функции json.load (). И в конце мы получаем получившийся словарь.
Используйте метод ast.literal.eval ()
Другая функция, используемая для преобразования строки в словарь, — ast.literal.eval (). Это также встроенная функция. Преобразование, которое происходит с помощью этого метода, эффективно. Перед использованием этой функции мы должны импортировать библиотеку ast.
В этом случае мы импортируем библиотеку ast, чтобы применить функцию ast.literal_eval (). Берем строку с именем str1. Инициализируем эту строку названиями игр. Здесь мы берем всего три игры. Мы вызываем оператор печати, чтобы напечатать названия игр.

Ast.literal_eval () имеет один параметр. Итак, мы передаем данную строку в качестве параметра функции. На последнем этапе мы снова вызываем оператор печати. Возвращает окончательный результат.

Конвертированную строку мы получаем с помощью метода ast.literal_eval (). В конце концов, определенная строка, в которой мы упоминаем имена птиц, преобразуется в словарь.
Использовать выражение генератора
Это еще один метод преобразования строки в словарь. В этом методе мы объявляем элементы строки, образующей пару, с помощью дефиса или разделяем с помощью запятой. Затем в цикле for мы используем функцию strip () и функцию split (). Эти функции обработки строк получают словарь. Используя функцию strip (), мы устраняем пробелы между элементами строки. Этот метод не очень эффективен при преобразовании струн, потому что получение результата занимает много времени.
В этом случае сначала мы объявляем строку, в которой мы берем оценки разных учеников по одному и тому же предмету. Значения пары строк соотносятся друг с другом с помощью дефиса. Каждая пара строки разделяется запятой. Это важно, потому что это инструмент для получения нужного нам результата. Затем мы вызываем оператор печати, который возвращает исходное значение строки.

В цикле for мы используем функцию strip () и функцию split (). С помощью этих функций мы получаем значения словаря в нормальном формате. Функция strip () удаляет пробелы между элементами строки. В последнем мы распечатали созданный словарь и подтвердили тип словаря с помощью type ().

Теперь мы получаем преобразованный словарь в нормальном формате с помощью выражений генератора. Наконец, мы также печатаем тип результирующего словаря с помощью type ().
Заключение
В этой статье мы объяснили различные подходы к преобразованию строки в словарь. Словари — это полезные типы данных. Иногда мы сталкиваемся с проблемами при преобразовании строк в словари. В Python строковый тип данных и тип данных словаря имеют свое значение. Однако, когда обмен данными происходит по сети, необходимо изменить строку на словарь, чтобы обеспечить безошибочную передачу данных.
3 Ways to Convert String to Dictionary in Python

Converting one data type into another is a frequent problem in python programming and it is essential to deal with it properly. Dictionary is one of the data types in python which stores the data as a key-value pair. However, the exchange of data between the server and client is done by python json which is in string format by default.
As it is necessary to convert the python string to dictionary while programming, we have presented a detailed guide with different approaches to making this conversation effective and efficient. But before jumping on the methods, let us quickly recall python string and dictionary in detail.
What is Strings in Python?
Python string is an immutable collection of data elements. It is a sequence of Unicode characters wrapped inside the single and double-quotes. Python does not have a character data type and therefore the single character is simply considered as a string of length 1. To know more about the string data type, please refer to our article «4 Ways to Convert List to String in Python».
Check out the below example for a better understanding of strings in python
For Example
Output
What is Dictionary in Python?
A dictionary is an unordered collection of data elements that is mutable in nature. Python dictionary stores the data in the form of key-value pair.
Hence we can say that dictionaries are enclosed within the curly brackets including the key-value pairs separated by commas. The key and value are separated by the colon between them.
The most important feature of the python dictionaries is that they don’t allow polymorphism. Also, the keys in the dictionary are case-sensitive. Therefore, the uppercase and lowercase keys are considered different from each other. Later, you can access the dictionary data by referring to its corresponding key name.
Check out the below example for a better understanding of dictionaries in python.
For Example
Output
Convert String to Dict in Python
Below are 3 methods to convert string to the dictionary in python:
1) Using json.loads()
You can easily convert python string to the dictionary by using the inbuilt function of loads of json library of python. Before using this method, you have to import the json library in python using the “import” keyword.
The below example shows the brief working of json.loads() method:
For Example
Output
2) Using ast.literal.eval()
The ast.literal.eval() is an inbuilt python library function used to convert string to dictionary efficiently. For this approach, you have to import the ast package from the python library and then use it with the literal_eval() method.
Check out the below example to understand the working of ast.literal.eval() method.
For Example
Output
3) Using generator expression
In this method, we will first declare the string values paired with the hyphen or separated by a comma. Later we will use the strip() and split() method of string manipulation in the for loop to get the dictionary in the usual format. Strip() method will help us to remove the whitespace from the strings. This method is not as efficient for the conversion of string to dictionary as it requires a lot of time to get the output.
Check out the below example for the string to dictionary conversion using a generator expression
For Example
Output
Conclusion
String and dictionary data type has its own importance when it comes to programming in python. But when we wish to share the data over the network as a client-server connection, it is very important to convert a string into the dictionary for error-free data transfer. We have mentioned the three common methods to explicitly convert the string into a dictionary which will help you to make your programming faster and efficient. To learn more about dictionary and JSON in python, check our detailed guide on “5 Ways to Convert Dictionary to JSON in Python”.