397 Stimmen

Konvertiert ein Python-Dict in einen String und zurück

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.

438voto

Tyler Eaves Punkte 12253

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)

249voto

PabloG Punkte 24135

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.

202voto

Eyal Ch Punkte 8554

Ich benutze json :

import json

# convert to string
input = json.dumps({'id': id })

# load to dict
my_dict = json.loads(input)

30voto

FightWithCode Punkte 2085

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.

14voto

ismail Punkte 43244

Verwenden Sie die pickle Modul, um es auf der Festplatte zu speichern und später zu laden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X