Convertir un python dict à une chaîne de caractères et à l'arrière
Je suis en train d'écrire un programme qui stocke les données dans un dictionnaire d'objet, mais ces données doivent être enregistrées au cours de l'exécution du programme et chargé dans le dictionnaire de l'objet lorsque le programme est exécuté à nouveau.
Comment puis-je convertir un dictionnaire d'objet en chaîne de caractères qui peuvent être écrites dans un fichier et chargé dans un objet dictionary? Ce sera je l'espère le soutien des dictionnaires contenant des dictionnaires.
Vous devez vous connecter pour publier un commentaire.
Le module json est une bonne solution ici. Il a l'avantage, par rapport cornichon qu'il ne produit que du texte brut, et est multi-plateforme et multi-version.
import json
comme je l'ai fait!Si votre dictionnaire n'est pas trop grande peut-être str + eval peut faire le travail:
Vous pouvez utiliser ast.literal_eval au lieu d'eval pour plus de sécurité si la source n'est pas fiable.
- Je utiliser
json
:Utiliser le
pickle
module pour l'enregistrer sur le disque et charger plus tard.Pourquoi ne pas utiliser Python 3 est intégré ast de la bibliothèque de fonction literal_eval. Il est préférable d'utiliser literal_eval au lieu de eval
donnera en sortie réelle Dictionnaire
Et Si vous demandez à convertir un Dictionnaire à une Chaîne alors, Comment sur l'utilisation de str() méthode de Python.
Supposons que le dictionnaire est :
Et ce sera fait comme ceci :
Sera D'Impression :
Ce soit le plus facile que vous le souhaitez.
Si dans Chinses
Je pense que vous devriez envisager d'utiliser la
soit
module qui fournit persistante sauvegardés dans des fichiers de type dictionnaire d'objets. Il est facile à utiliser à la place d'un "vrai" dictionnaire parce qu'il est presque transparente fournit à votre programme avec quelque chose qui peut être utilisé comme un dictionnaire, sans la nécessité de convertir explicitement à une chaîne et puis les écrire dans un fichier (ou vice-versa).La différence principale est de devoir d'abord
open()
avant la première utilisation et ensuiteclose()
lorsque vous avez terminé (et éventuellementsync()
ing, selon lewriteback
option en cours d'utilisation). Tout de "plateau" des objets de fichiers à créer régulières peuvent contenir des dictionnaires en tant que valeurs, leur permettant d'être logiquement imbriqués.Voici un exemple trivial:
De sortie:
- Je utiliser le format yaml pour que le si doit être lisible (ni JSON, ni XML sont qu'à mon humble avis), ou si la lecture n'est pas nécessaire que j'utilise cornichon.
Écrire
Lire
b
drapeau lors de l'ouverture du fichier ici.dumps()
les valeurs par défaut pour le protocole de 0, ce qui est un protocole ascii. C'est pourquoi'rb'
n'est pas nécessaire à mon humble avis.utiliser les méthodes classiques plutôt que les bibliothèques, qui sont simples
. Cela a fonctionné pour moi
dict
objet, et pourquoi est-il mieux que toutes les autres méthodes?