104 votes

Comment créer un dictionnaire Python avec des guillemets doubles comme format de citation par défaut ?

J'essaie de créer un dictionnaire python qui doit être utilisé comme un script java var à l'intérieur d'un fichier html à des fins de visualisation. J'ai besoin de créer le dictionnaire avec tous les noms entre guillemets doubles au lieu des guillemets simples par défaut que Python utilise. Existe-t-il un moyen simple et élégant d'y parvenir ?

    couples = [
               ['jack', 'ilena'], 
               ['arun', 'maya'], 
               ['hari', 'aradhana'], 
               ['bill', 'samantha']]
    pairs = dict(couples)
    print pairs

Sortie générée :

{'arun': 'maya', 'bill': 'samantha', 'jack': 'ilena', 'hari': 'aradhana'}

Résultats attendus :

{"arun": "maya", "bill": "samantha", "jack": "ilena", "hari": "aradhana"}

Je sais, json.dumps(pairs) fait le travail, mais le dictionnaire dans son ensemble est converti en une chaîne de caractères, ce qui n'est pas ce que j'attends.

P.S. : Existe-t-il une autre façon de procéder en utilisant json, étant donné que j'ai affaire à des dictionnaires imbriqués ?

1voto

shao.lo Points 97

Le problème que j'ai rencontré à plusieurs reprises est le chargement d'un fichier json.

import json
with open('json_test.json', 'r') as f:
    data = json.load(f)
    print(type(data), data)
    json_string = json.dumps(data)
    print(json_string)

Je passe accidentellement des données à une fonction qui veut une chaîne json et je reçois l'erreur que le guillemet simple n'est pas un json valide. Je revérifie le fichier json d'entrée et je vois les guillemets doubles, puis je me gratte la tête pendant une minute.

Le problème est que les données sont un dict et non une chaîne, mais lorsque Python les convertit pour vous, ce n'est PAS un json valide.

<class 'dict'> {'bill': 'samantha', 'jack': 'ilena', 'hari': 'aradhana', 'arun': 'maya'}
{"bill": "samantha", "jack": "ilena", "hari": "aradhana", "arun": "maya"}

Si le json est valide et que le dict n'a pas besoin d'être traité avant d'être converti en chaîne, le chargement en tant que chaîne suffit.

with open('json_test.json', 'r') as f:
    json_string = f.read()
    print(json_string)

1voto

C'est simple, il suffit de 2 étapes

step1:converting your dict to list

step2:iterate your list and convert as json .

Pour mieux comprendre, consultez l'extrait ci-dessous

import json
couples = [
               ['jack', 'ilena'], 
               ['arun', 'maya'], 
               ['hari', 'aradhana'], 
               ['bill', 'samantha']]
pairs = [dict(couples)]#converting your dict to list
print(pairs)

#iterate ur list and convert as json
for x in pairs:
    print("\n after converting: \n\t",json.dumps(x))#json like structure

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X