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.

11voto

Hrvoje Punkte 9859

Wörterbuch in JSON umwandeln (String)

import json 

mydict = { "name" : "Don", 
          "surname" : "Mandol", 
          "age" : 43} 

result = json.dumps(mydict)

print(result[0:20])

werden Sie bekommen:

{"Name": "Don", "sur

String in Wörterbuch umwandeln

back_to_mydict = json.loads(result)

6voto

beta Punkte 61

In chinesischer Sprache sollten Sie die folgenden Einstellungen vornehmen:

import codecs
fout = codecs.open("xxx.json", "w", "utf-8")
dict_to_json = json.dumps({'text':""},ensure_ascii=False,indent=2)
fout.write(dict_to_json + '\n')

4voto

mathandy Punkte 1362

Vielleicht finden Sie die json.dumps() Methode braucht Hilfe bei der Handhabung einiger Objekttypen.

Die Anerkennung geht an die beste Antwort von diese Stelle für das Folgende:

import json
json.dumps(my_dictionary, indent=4, sort_keys=True, default=str)

3voto

martineau Punkte 110783

Ich denke, Sie sollten die Verwendung des shelve Modul, das persistente, dateiunterstützte, wörterbuchähnliche Objekte bereitstellt. Es ist einfach anstelle eines "echten" Wörterbuchs zu verwenden, da es Ihrem Programm fast transparent etwas zur Verfügung stellt, das wie ein Wörterbuch verwendet werden kann, ohne dass es explizit in eine Zeichenkette konvertiert und dann in eine Datei geschrieben werden muss (oder umgekehrt).

Der Hauptunterschied besteht darin, dass man zunächst open() vor dem ersten Gebrauch und dann close() wenn Sie fertig sind (und möglicherweise sync() abhängig von der jeweiligen writeback Option verwendet wird). Alle "Shelf"-Dateien, die erstellt werden, können reguläre Wörterbücher als Werte enthalten, so dass sie logisch verschachtelt werden können.

Hier ist ein triviales Beispiel:

import shelve

shelf = shelve.open('mydata')  # open for reading and writing, creating if nec
shelf.update({'one':1, 'two':2, 'three': {'three.1': 3.1, 'three.2': 3.2 }})
shelf.close()

shelf = shelve.open('mydata')
print shelf
shelf.close()

Salida:

{'three': {'three.1': 3.1, 'three.2': 3.2}, 'two': 2, 'one': 1}

3voto

Tomasz Bartkowiak Punkte 8157

Wenn Ihnen die Geschwindigkeit wichtig ist, verwenden Sie ujson (UltraJSON), die die gleiche API wie json hat:

import ujson
ujson.dumps([{"key": "value"}, 81, True])
# '[{"key":"value"},81,true]'
ujson.loads("""[{"key": "value"}, 81, true]""")
# [{u'key': u'value'}, 81, True]

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