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?Das json-Modul ist hier eine gute Lösung. Es hat gegenüber pickle den Vorteil, dass es nur einfache Textausgaben erzeugt und plattform- und versionsübergreifend ist.
import json
json.dumps(dict)
Wenn Ihr Wörterbuch nicht zu groß ist, kann vielleicht str + eval die Arbeit erledigen:
dict1 = {'one':1, 'two':2, 'three': {'three.1': 3.1, 'three.2': 3.2 }}
str1 = str(dict1)
dict2 = eval(str1)
print(dict1 == dict2)
Sie können verwenden ast.literal_eval anstelle von eval für zusätzliche Sicherheit, wenn die Quelle nicht vertrauenswürdig ist.
Warum nicht die in Python 3 eingebaute ast Die Funktion der Bibliothek literal_eval . Es ist besser zu verwenden literal_eval anstelle von eval
import ast
str_of_dict = "{'key1': 'key1value', 'key2': 'key2value'}"
ast.literal_eval(str_of_dict)
ergibt die Ausgabe als aktuelles Wörterbuch
{'key1': 'key1value', 'key2': 'key2value'}
Und wenn Sie um die Umwandlung einer Wörterbuch in eine Zeichenkette Wie wäre es dann mit der Verwendung von str() Methode von Python.
Angenommen, das Wörterbuch lautet :
my_dict = {'key1': 'key1value', 'key2': 'key2value'}
Und das wird folgendermaßen geschehen:
str(my_dict)
Wird gedruckt:
"{'key1': 'key1value', 'key2': 'key2value'}"
Dies ist die einfachste Variante.
- See previous answers
- Weitere Antworten anzeigen