Как сохранить объект типа «pos-словарь»? (СетьX)

Я использую networkx as nx. После создания графического объекта (G) я использую метод data = nx.spring_layout(G) для создания словаря (поз.). Создание этого объекта pos занимает очень много времени, и я хочу сохранить его в виде файла, чтобы мне не приходилось перезапускать его каждый раз, когда я хочу работать с этим набором данных. Вот как это выглядит до сих пор:

G = nx.Graph()
G.add_edges_from(tuples)
data = nx.spring_layout(G)

Если я запускаю type(data), я получаю «дикт». Если я запускаю тип (G), я получаю «networkx.classes.graph.Graph».

Поскольку это объект 'dict', вот несколько решений, которые я нашел в Интернете, которые я пробовал и не работал:

1. Сохраните его как файл .csv.

import csv

w = csv.writer(open("output.csv", "w"))

for key, val in data.items():
    w.writerow([key, val])

2. Сохранить как файл JSON

import json
json = json.dumps(data)


f = open("data.json","w")

f.write(json)

f.close()

3. Сохранить как файл .txt

f = open("data.txt","w")

f.write( str(data) )

f.close()

Надеюсь, я ясно дал понять, что (i) я не знаю, какой тип файла лучше всего подходит для сохранения такого рода объектов; что (ii) я не знаю, как его сохранить; и (iii) что, естественно, я не знаю, как правильно загрузить этот файл как объект 'pos dict' после его сохранения в моем каталоге.

Для справки, nx.spring_layout(G) возвращает: "поз: словарь Словарь позиций с ключом node.», как описано в документация.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
20
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вероятно, самый простой способ сохранить объект Python для последующего использования — это использовать модуль pickle:

import pickle

# save data
with open('positions.pickle', 'wb') as f:
    pickle.dump(data, f)

# load data
with open('positions.pickle', 'rb') as f:
    data = pickle.load(f)

Другие вопросы по теме