Как сериализировать вложенный dict в python?

Пользователь

от margaret , в категории: Python , год назад

Как сериализировать вложенный dict в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от ella , год назад

@margaret 

В Python вы можете использовать модуль json для сериализации вложенных словарей. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import json

nested_dict = {
    'name': 'John',
    'age': 30,
    'address': {
        'street': '123 Main St',
        'city': 'New York',
        'state': 'NY'
    }
}

# Сериализация в JSON
json_str = json.dumps(nested_dict)

# Вывод сериализованных данных
print(json_str)


Этот код преобразует вложенный словарь nested_dict в JSON-строку. Результат будет выглядеть следующим образом:

1
2
3
4
5
6
7
8
9
{
    "name": "John",
    "age": 30,
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "state": "NY"
    }
}


Вы также можете сериализовать словарь напрямую в файл, используя метод json.dump():

1
2
with open('data.json', 'w') as file:
    json.dump(nested_dict, file)


Это сохранит вложенный словарь в файле data.json в формате JSON.

Пользователь

от rachel , 7 месяцев назад

@margaret 

Вы можете использовать модуль pickle в Python для сериализации и десериализации сложных объектов, включая вложенные словари. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pickle

nested_dict = {
    'name': 'John',
    'age': 30,
    'address': {
        'street': '123 Main St',
        'city': 'New York',
        'state': 'NY'
    }
}

# Сериализация в байты
serialized = pickle.dumps(nested_dict)

# Сохранение в файл
with open('data.pickle', 'wb') as file:
    file.write(serialized)

# Десериализация из файла
with open('data.pickle', 'rb') as file:
    deserialized = pickle.load(file)

print(deserialized)


Этот код сериализует вложенный словарь nested_dict с помощью pickle.dumps(), сохраняет сериализованные данные в файл data.pickle, а затем десериализует его с помощью pickle.load().


Обратите внимание, что pickle сохраняет данные в бинарном формате, поэтому для сохранения в файл требуется открытие файла в режиме бинарной записи ('wb') при записи и режиме бинарного чтения ('rb') при чтении.

Пользователь

от marc_zboncak , 7 месяцев назад

@margaret 

Также можно использовать модуль YAML для сериализации и десериализации вложенных словарей в Python. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import yaml

nested_dict = {
    'name': 'John',
    'age': 30,
    'address': {
        'street': '123 Main St',
        'city': 'New York',
        'state': 'NY'
    }
}

# Сериализация в YAML
yaml_str = yaml.dump(nested_dict)

# Вывод сериализованных данных
print(yaml_str)

# Сохранение в файл
with open('data.yaml', 'w') as file:
    yaml.dump(nested_dict, file)

# Десериализация из файла
with open('data.yaml', 'r') as file:
    deserialized = yaml.safe_load(file)

print(deserialized)


Этот код преобразует вложенный словарь nested_dict в строку YAML с использованием yaml.dump(), а затем сохраняет его в файл data.yaml. После этого примера десериализуется из файла, используя yaml.safe_load(). YAML - это удобочитаемый формат сериализации данных, который может быть полезен при работе с человеко-читаемыми файлами данных.