Рубрики
Без рубрики

Как преобразовать строковое представление словаря в словарь?

Проблема: как преобразовать представление ул. Обвинитесь в Dict? Пример: давайте создадим список игроков NBA. У вас есть Леброн там, угля, степх, и все талантливые парни. Это выглядит так же. Баскетбол = ‘{“Ленброн Джеймс”: “Лос-Анджелес Лейкерс”, “Джеймс Харден”: “Хьюстон Ракеты”, “Стивен Карри”: “Золотой … Как преобразовать строковое представление словаря в словаре? Подробнее “

Автор оригинала: Andrew Nostvick.

Проблема : Как преобразовать ул ...| Представление A Диктовать в Диктовать ?

Пример : Давайте Создать список игроков НБА. У вас есть Леброн там, угля, степх, и все талантливые парни. Это выглядит так же.

basketball = '{"LeBron James": "Los Angeles Lakers", "James Harden" : "Houston Rockets", "Stephen Curry" : "Golden State Warriors", "Trae Young" : "Atlanta Hawks", "Luka Doncic" : "Dallas Mavericks", "Giannis Antetokounmpo" : "Milwaukee Bucks", "Bradley Beal" : "Washington Wizards", "Anthony Davis" : "Los Angeles Lakers", "Kawhi Leonard" : "Los Angeles Clippers", "Jamal Murray" : "Denver Nuggets"}'

Похоже на словарь, но это не так. Это строка. Как изменить его из строки в словарь?

Обзор решения : Вы можете сделать это, преобразовав его в словарь. Вы могли бы сделать это долгим способом, набрав все, но это будет включать в себя некоторые корректировки. Вместо этого есть пара способов, которыми вы можете сделать это и один большой Нет-нет того, что вы не должны использовать (метод 1):

Упражнение : Запустите код. Все три переменных типа Словарь типа?

Давайте начнем с того, что вы не должны использовать.

Метод 1: Eval () опасен

Python’s Eval Функция встроена, и она может показаться хорошей идеей для использования. Однако, используя Eval () Функция опасна, потому что она может выполнять все виды кода Python в вашей операционной системе, как удаление или создание файлов. Вы никогда не должны доверять коду из Интернета, который упакован в Eval () или EXEC () Функция!

Uned batchelder покрывает это Тема Ну в своем блоге. Даже при гарантиях вы вставляете, это может быть недостаточно.

d = eval(basketball)

Eval () Функция оценивает строку и понимает, что это словарь. Итак, он возвращает словарь. Результат хранится в переменной d .

Как вы начинаете работать с Python, вам нужно быть осторожным, чтобы не использовать такие параметры, как Eval () Отказ Дело в том, что для вас есть лучшие варианты. И есть одна легкая альтернатива, которая может доставить вас туда, куда вы хотите.

Способ 2: литые

AST – еще один встроенный модуль для Python. Вам нет необходимости установить AST, потому что это просто для вас. Просто импортируйте его в верхней части вашего кода, используя Импорт АСТ Отказ Библиотека помогает интерпретатору Python в анализе абстрактного синтаксического дерева – то, что вы можете назвать « Грамматика вашего кода ».

Вы специально надо использовать lictal_eval (или ast.literal_eval ). Вы можете оценить строка, которая содержит буквальный или контейнерный дисплей . Это работает для всех структур Python, включая словари.

d = ast.literal_eval(basketball)

Для этого вы будете использовать это так. Использование этого метода позволяет преобразовать вашу строку в словарь.

Если это поможет кому-нибудь, вы всегда можете попытаться создать небольшое сравнение между двумя Отказ Если вам нужно больше убедить, то создайте оператор печати. Это покажет, что у вас есть класс, который является словарь. Если это не так, то вы можете снова проверить свой код.

print(type(d))

Это самое распространенное решение проблемного сравнения это Статья, чтобы узнать больше!

Но если вы ищете что-то другое, у нас есть другой вариант для вас.

Метод 3: JSON

JSON означает для объекта JavaScript. Это Используется ли синтаксис JavaScript, но он используется для более чем просто JavaScript Отказ

Как и с AST, JSON – это встроенный модуль для Python, что означает, что вам никогда не нужно его установить. Все, что вам нужно сделать, это ввести Импорт JSON в верхней части вашего сценария.

Для этого примера мы будем использовать json.loads Метод, который является эквивалентным чтением файла или в этом случае наш краткий словарь.

Теперь вам может быть интересно, почему мы не будем использовать json.load. . Для этого есть хорошая причина. С функцией нагрузки он предполагает, что у вас есть JSON File уже настроен Отказ Использование нагрузок позволяет преобразовать вашу строку в этом случае в словаре.

Если бы вы использовали json.load () , вы получите ошибку атрибута. Пожалуйста, добавьте «S» после нагрузки. Вы поблагодарите нам позже.

d = json.loads(basketball)

Для нашего примера мы рекомендуем превратить его в переменную.

Это так просто. Когда вы запускаете его, вы увидите, что он превращается в словарь Python. Но откуда вы знаете, работал ли обращение? Ну, это похоже на предыдущий метод. У вас есть несколько вариантов, которые вы может обратиться к Отказ Но самое лучшее, безусловно, это использовать функцию типа. Это просто хорошо использовать. И, как мы упомянули выше, вы можете сделать это как способ сравнить обе вариации.

Теперь, как бы вы хотели преобразовать только строку в словарь, но напишите его на файл json? Это достаточно легко сделать, особенно если вы написали файлы в Python раньше.

Вы захотите использовать с открытым оператором, чтобы написать свой файл JSON, используя «W» для записи. Единственное отличие состоит в том, что вы будете писать в следующей строке. Вместо того, чтобы использовать писать, вы будет использовать json.dump () а также переменная и на месте. Это будет выглядеть так.

with open("players.json", "w") as f:
	json.dump(d, f)

Когда вы закончите, он пишет полный словарь JSON в ваш файл. Вы можете открыть его и вуаля, это как магия.

Независимо от маршрута вы решите пойти, у вас есть решения, доступные для вас, которые могут быть полезны. И эй, мы надеемся, что вы узнали что-то от этого.

Оригинал: “https://blog.finxter.com/how-to-convert-a-string-representation-of-a-dictionary-to-a-dictionary/”