Mehrdimensionale Dictionaries und Shelves
Verfasst: Dienstag 7. August 2012, 10:50
Ich würde gerne ein "shelve" benutzen, um ein mehrdimansionales Dictionary persitent zu halten.
Allerdings habe ich festgestellt, dass sich ein "shelve" entgegen der Beschreibung in der Dokumentation anders verhält als ein Dictionary. (s.u.)
Kann mir jemand sagen, wie ich diese mehrdimensionalen Dictionaries in ein Shelve speichern kann?
Ich hatte schon über "sqlite" nachgedacht, aber da ich in einigen Loops über die unteren Dimensionen des Dictionaries iterieren möchte und diese sich in Anzahl und Werten unterscheiden können, bin ich wieder davon abgekommen.
Ich möchte etwas persistentes, weil sich der Eingabestrom, aus dem das Dictionary generiert wird, täglich ändert und mit den alten Werten verglichen werden soll.
Am Ende kann so eine Struktur eben so aussehen:
Allerdings habe ich festgestellt, dass sich ein "shelve" entgegen der Beschreibung in der Dokumentation anders verhält als ein Dictionary. (s.u.)
Code: Alles auswählen
159: db_shelf = shelve.open("test.s")
160: db_shelf["Main"] = {}
161: db_shelf
{'Main': {}}
162: db_shelf["Main"]["Sub"] = {}
163: db_shelf
{'Main': {}}
165: db_dict = {}
166: db_dict["Main"] = {}
167: db_dict["Main"]["Sub"] = {}
168: db_dict
{'Main': {'Sub': {}}}
Ich hatte schon über "sqlite" nachgedacht, aber da ich in einigen Loops über die unteren Dimensionen des Dictionaries iterieren möchte und diese sich in Anzahl und Werten unterscheiden können, bin ich wieder davon abgekommen.
Ich möchte etwas persistentes, weil sich der Eingabestrom, aus dem das Dictionary generiert wird, täglich ändert und mit den alten Werten verglichen werden soll.
Am Ende kann so eine Struktur eben so aussehen:
Code: Alles auswählen
In [190]: db_dict
Out[190]:
{'Main': {'Sub1': {'type': 33}, 'Sub2': {'type': 444}},
'Main-2': {'Sub1': {'count': 100, 'type': 678}, 'Sub2': {'count': 180}}}