Comment sérialiser un dictionnaire Python en une chaîne, puis revenir à un dictionnaire ? Le dictionnaire contient des listes et d'autres dictionnaires.
Réponses
Trop de publicités?
yoyo
Points
802
Si vous faites entièrement confiance à la chaîne et ne vous souciez pas des attaques par injection de python, alors c'est une solution très simple :
d = { 'method' : "eval", 'safe' : False, 'guarantees' : None }
s = str(d)
d2 = eval(s)
for k in d2:
print k+"="+d2[k]
Si vous êtes plus soucieux de la sécurité, alors ast.literal_eval
est un meilleur pari.
Przemek D
Points
325
Une chose que json
ne peut pas faire est dict
indexé avec des chiffres. L'extrait suivant
import json
dictionary = dict({0:0, 1:5, 2:10})
serialized = json.dumps(dictionary)
unpacked = json.loads(serialized)
print(unpacked[0])
lancera
KeyError: 0
Parce que les clés sont converties en chaînes. cPickle
conserve le type numérique et le dict
déballé peut être utilisé immédiatement.