Ответ
Словарь (dict) — это встроенная структура данных в Python для хранения пар "ключ-значение" в памяти, а JSON (JavaScript Object Notation) — это текстовый формат для обмена данными между системами.
Несмотря на внешнее сходство, у них есть ключевые технические различия:
| Характеристика | Словарь Python (dict) |
JSON |
|---|---|---|
| Сущность | Объект в памяти, структура данных | Текстовая строка, формат данных |
| Ключи | Любой хешируемый тип (число, строка, кортеж) | Только строки в двойных кавычках |
| Типы значений | Любой объект Python | Строки, числа, true, false, null, массивы, другие JSON-объекты |
| Синтаксис | Допускаются одинарные кавычки, висячие запятые | Строгий синтаксис: только двойные кавычки, нет висячих запятых |
| Комментарии | Не поддерживаются | Не поддерживаются |
Преобразование: сериализация и десериализация
Для преобразования между этими форматами используется модуль json.
- Сериализация (
dict→json): преобразование объекта Python в строку JSON с помощьюjson.dumps(). - Десериализация (
json→dict): парсинг строки JSON в объект Python с помощьюjson.loads().
import json
# Исходный словарь Python
python_dict = {
"name": "Alice",
"age": 30,
"is_active": True,
1: "numeric_key" # Ключ - число, недопустим в JSON
}
# 1. Сериализация в JSON
# Обратите внимание: ключ 1 будет преобразован в строку "1"
json_string = json.dumps(python_dict, indent=4)
print("--- JSON строка ---")
print(json_string)
# Вывод:
# {
# "name": "Alice",
# "age": 30,
# "is_active": true,
# "1": "numeric_key"
# }
# 2. Десериализация обратно в словарь Python
back_to_dict = json.loads(json_string)
print("n--- Словарь после десериализации ---")
print(back_to_dict)
# Вывод:
# {'name': 'Alice', 'age': 30, 'is_active': True, '1': 'numeric_key'}
Итог: dict используется для работы с данными внутри программы, а JSON — для их передачи по сети или сохранения в файл.