У меня есть структура данных, которая выглядит так:
x = defaultdict(lambda: defaultdict(list))
К сожалению, у меня возникают проблемы с хранением этой структуры данных в формате pickle следующим образом:
import pickle
with open('x.pkl', 'wb') as f: pickle.dump(x, f)
Я получаю ошибку:
PicklingError: Can't pickle <function <lambda> at 0x7f20a790e398>: it not found as file_im_referencing.<lambda>
Есть ли лучший способ записать эти данные на диск?
Пикель не может работать с лямбдой или локальной функцией. Вы можете сделать функцию GLOBAL, чтобы сделать это
from collections import defaultdict
import pickle
def _global_helper_function():
return defaultdict(list)
x = defaultdict(_global_helper_function)
pickle.dump(x, f)
Выполняя функцию global, она связана с файлом, что облегчает рассол.
lambda
вы можете простоdef
функцию в модуле.