Ich schreibe ein Programm, das Daten in einem Wörterbuchobjekt speichert. Diese Daten müssen jedoch zu einem bestimmten Zeitpunkt während der Programmausführung gespeichert und bei der nächsten Ausführung des Programms wieder in das Wörterbuchobjekt geladen werden. Wie kann ich ein Wörterbuchobjekt in eine Zeichenkette umwandeln, die in eine Datei geschrieben und wieder in ein Wörterbuchobjekt geladen werden kann? Dies wird hoffentlich Wörterbücher mit Wörterbüchern unterstützen.
Antworten
Zu viele Anzeigen?
Gerard
Punkte
158
Ich verwende yaml dafür, wenn es lesbar sein muss (weder JSON noch XML sind das IMHO), oder wenn Lesen nicht notwendig ist, verwende ich pickle.
Schreiben Sie
from pickle import dumps, loads
x = dict(a=1, b=2)
y = dict(c = x, z=3)
res = dumps(y)
open('/var/tmp/dump.txt', 'w').write(res)
Zurück lesen
from pickle import dumps, loads
rev = loads(open('/var/tmp/dump.txt').read())
print rev
Abdul Muiz Khan
Punkte
11
Ich habe herausgefunden, dass das Problem nicht bei meinem Diktat-Objekt lag, sondern bei den Schlüsseln und Werten, die vom Typ RubyString waren, nachdem ich sie mit der RubyMarshl-Methode "loads" geladen hatte
Also habe ich dies getan:
dic_items = dict.items()
new_dict = {str(key): str(value) for key, value in dic_items}
- See previous answers
- Weitere Antworten anzeigen