Сохранение словарей в файл (numpy и Python 2/3 friendly)

Я хочу создать иерархическое хранилище значений ключей в Python, которое сводится к хранению словарей в файлах. Под этим я подразумеваю любой тип структуры словаря, который может содержать другие словари, числовые массивы, сериализуемые объекты Python и т. Д. Мало того, я хочу, чтобы он сохранял пустые массивы и оптимизировал пространство между Python 2 и 3.

Ниже приведены методы, которые я знаю, там. Мой вопрос: чего не хватает в этом списке, и есть ли альтернатива, которая уклоняется от всего, мои нарушители соглашения?

Питонаpickle модуль (разжигатель сделок: сильно раздувает размер массивов)Numpy-хsave/savez/load (прерыватель сделки: несовместимый формат в Python 2/3)Замена PyTables для numpy.savez (выключатель: работает только с массивами)Использование PyTables вручную (прерыватель сделки: я хочу это для постоянно меняющегося исследовательского кода, поэтому очень удобно иметь возможность выгружать словари в файлы, вызывая одну функцию)

Замена PyTablesnumpy.savez многообещающе, так как мне нравится идея использовать hdf5, и он действительно эффективно сжимает массивы numpy, что является большим плюсом. Тем не менее, он не требует какого-либо типа структуры словаря.

В последнее время я использовал что-то похожее на замену PyTables, но улучшил его, чтобы можно было хранить записи любого типа. Это на самом деле работает довольно хорошо, но я обнаруживаю, что храню примитивные типы данных в массивах длины 1, что немного неудобно (и неоднозначно для фактических массивов длины 1), даже если я установилchunksize до 1, так что это не займет так много места.

Есть ли что-то подобное уже там?

Спасибо!

Ответы на вопрос(5)

Ваш ответ на вопрос