что я могу использовать для хранения этого объекта автовивификации? - PullRequest
0 голосов
/ 11 февраля 2019

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

class AutoVivification(dict):
    """Implementation of perl's autovivification feature."""

    def __getitem__(self, item):
        try:
            return dict.__getitem__(self, item)
        except KeyError:
            value = self[item] = type(self)()
            return value

Я переезжаю на python3 и испытываю трудности с pickle для хранения: проблема при загрузке файла автовивификации при переходе с python 2.7 на3.6, KeyError: 'DictType' .Я ищу что-то, что будет хранить этот объект.Я пытался:

import pandas as pd
import jsonpickle
import h5py

def test_hdf5():
    dogs = AutoVivification()
    dogs['type'] = pd.DataFrame([['k9']])
    dogs['category']['color'] = 'white'
    dogs['#'] = 4
    hf = h5py.File(path_test + 'test.h5', 'w')
    hf.create_dataset('dataset_1', data=dogs)
    hf.close()


def test_jsonpickle():
    dogs = AutoVivification()
    dogs['type'] = pd.DataFrame([['k9']])
    dogs['category']['color'] = 'white'
    dogs['#'] = 4
    frozen = jsonpickle.encode(dogs)
    thawed = jsonpickle.decode(frozen)

Оба из них не работают.

Любые предложения о том, что попробовать?

...