Хранение словаря с лямбда-функцией в python

1

У меня есть структура данных, которая выглядит так:

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>

Есть ли лучший способ записать эти данные на диск?

  • 2
    Вместо того, чтобы использовать lambda вы можете просто def функцию в модуле.
Теги:

1 ответ

2
Лучший ответ

Пикель не может работать с лямбдой или локальной функцией. Вы можете сделать функцию GLOBAL, чтобы сделать это

from collections import defaultdict
import pickle

def _global_helper_function():
    return defaultdict(list)

x = defaultdict(_global_helper_function)
pickle.dump(x, f)

Выполняя функцию global, она связана с файлом, что облегчает рассол.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню