Zapisywanie słowników do pliku (przyjazne numpy i Python 2/3)

Chcę robić hierarchiczne przechowywanie wartości klucza w Pythonie, co zasadniczo sprowadza się do przechowywania słowników do plików. Mam tu na myśli każdy rodzaj struktury słownika, który może zawierać inne słowniki, tablice numeryczne, obiekty Pythona do serializacji i tak dalej. Co więcej, chcę, aby przechowywał zoptymalizowane tablice z numerami i grał ładnie między Pythonem 2 i 3.

Poniżej znajdują się metody, które znam. Moje pytanie brzmi: czego brakuje na tej liście i czy istnieje alternatywa, która unika wszystkich moich łamaczy umów?

Pythonapickle module (deal-breaker: często powiększa rozmiar tablic numpy)Numpy'ssave/savez/load (wyłącznik transakcji: Niezgodny format w Pythonie 2/3)PyTables zamiennik dla numpy.savez (break-breaker: obsługuje tylko tablice numpy)Ręczne korzystanie z PyTables (wyłącznik transakcji: chcę tego dla stale zmieniającego się kodu badawczego, więc naprawdę wygodnie jest zrzucić słowniki do plików, wywołując jedną funkcję)

Wymiana PyTablesnumpy.savez jest obiecujący, ponieważ podoba mi się pomysł korzystania z hdf5 i bardzo skutecznie kompresuje tablice numpy, co jest dużym plusem. Nie bierze jednak żadnej struktury słownika.

Ostatnio używam czegoś podobnego do zamiennika PyTables, ale ulepszam go, aby móc przechowywać dowolny typ wpisów. W rzeczywistości działa to całkiem dobrze, ale uważam, że przechowuję prymitywne typy danych w CArrays o długości 1, co jest trochę niezręczne (i niejednoznaczne w stosunku do rzeczywistych tablic długości-1), mimo że ustawiłemchunksize do 1, więc nie zajmuje tyle miejsca.

Czy jest tam coś takiego?

Dzięki!

questionAnswers(5)

yourAnswerToTheQuestion