Ich schreibe ein Programm, das Daten in einem Wörterbuchobjekt speichert, aber diese Daten müssen irgendwann während der Programmausführung gespeichert und wieder in das Wörterbuchobjekt geladen werden, wenn das Programm erneut ausgeführt wird. Wie würde ich ein Wörterbuchobjekt in eine Zeichenfolge konvertieren, die in eine Datei geschrieben und wieder in ein Wörterbuchobjekt geladen werden kann? Dies wird hoffentlich Wörterbücher unterstützen, die Wörterbücher enthalten.
python
json
dictionary
serialization
AJ00200
quelle
quelle
import json
wie ich es getan habe!Wenn Ihr Wörterbuch nicht zu groß ist, kann str + eval möglicherweise die Arbeit erledigen:
Sie können ast.literal_eval anstelle von eval verwenden, um zusätzliche Sicherheit zu gewährleisten, wenn die Quelle nicht vertrauenswürdig ist.
quelle
Ich benutze
json
:quelle
Verwenden Sie das
pickle
Modul, um es auf der Festplatte zu speichern und später zu laden.quelle
Warum nicht Python 3 des eingebauten verwenden ast Bibliothek Funktion literal_eval . Es ist besser, literal_eval anstelle von eval zu verwenden
gibt die Ausgabe als aktuelles Wörterbuch aus
Und wenn Sie ein Wörterbuch in einen String konvertieren möchten , verwenden Sie die str () -Methode von Python.
Angenommen, das Wörterbuch lautet:
Und das wird so gemacht:
Wird drucken:
Dies ist das Einfache, wie Sie möchten.
quelle
Wenn in Chinses
quelle
Wörterbuch in JSON konvertieren (Zeichenfolge)
Kriege dich:
String in Wörterbuch konvertieren
quelle
Ich denke, Sie sollten in Betracht ziehen, das
shelve
Modul zu verwenden, das persistente dateibasierte wörterbuchähnliche Objekte bereitstellt. Es ist einfach anstelle eines "echten" Wörterbuchs zu verwenden, da es Ihrem Programm fast transparent etwas bietet, das genau wie ein Wörterbuch verwendet werden kann, ohne dass es explizit in eine Zeichenfolge konvertiert und dann in eine Datei (oder umgekehrt) geschrieben werden muss. umgekehrt).Der Hauptunterschied besteht darin, dass Sie es zunächst
open()
vor der ersten Verwendung und dann nach Abschluss verwenden müssenclose()
(und möglicherweisesync()
abhängig von der verwendetenwriteback
Option). Jedes "Regal" -Dateiobjekt, das erstellt wird, kann reguläre Wörterbücher als Werte enthalten, sodass sie logisch verschachtelt werden können.Hier ist ein triviales Beispiel:
Ausgabe:
quelle
Wenn Sie sich für die Geschwindigkeit interessieren, verwenden Sie ujson (UltraJSON), das dieselbe API wie json hat:
quelle
Ich benutze yaml dafür, wenn es lesbar sein muss (weder JSON noch XML sind das IMHO), oder wenn das Lesen nicht notwendig ist, benutze ich pickle.
Schreiben
Lesen Sie zurück
quelle
b
Flag wirklich verwenden, wenn Sie die Datei hier öffnen.dumps()
Standardwert ist jedoch Protokoll 0, bei dem es sich um ein ASCII-Protokoll handelt. Deshalb ist'rb'
IMHO nicht notwendig.