Я использую 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 для последующего использования — это использовать модуль 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)