J'ai un dict comme ça:
sample = {'ObjectInterpolator': 1629, 'PointInterpolator': 1675, 'RectangleInterpolator': 2042}
Je n'arrive pas à comprendre comment vider le dict dans un fichier json
, comme indiqué ci-dessous:
{
"name": "interpolator",
"children": [
{"name": "ObjectInterpolator", "size": 1629},
{"name": "PointInterpolator", "size": 1675},
{"name": "RectangleInterpolator", "size": 2042}
]
}
Existe-t-il un moyen pythonique de le faire?
Vous pouvez deviner que je veux générer un treemap d3
.
import json
with open('result.json', 'w') as fp:
json.dump(sample, fp)
C'est un moyen plus facile de le faire.
Dans la deuxième ligne de code, le fichier result.json
est créé et ouvert en tant que variable fp
.
Dans la troisième ligne, votre dict sample
est écrit dans le result.json
!
Combinez la réponse de @mgilson et @gnibbler, j'ai trouvé ce dont j'avais besoin, c'était ceci:
d = {"name":"interpolator",
"children":[{'name':key,"size":value} for key,value in sample.items()]}
j = json.dumps(d, indent=4)
f = open('sample.json', 'w')
print >> f, j
f.close()
C’est ainsi que j’ai un fichier json joliment imprimé. Les astuces print >> f, j
se trouvent ici: http://www.anthonydebarros.com/2012/03/11/generate-json-from-sql-using-python/
d = {"name":"interpolator",
"children":[{'name':key,"size":value} for key,value in sample.items()]}
json_string = json.dumps(d)
Bien sûr, il est peu probable que l'ordre soit exactement préservé ... Mais ce n'est que la nature des dictionnaires ...
Cela devrait vous donner un début
>>> import json
>>> print json.dumps([{'name': k, 'size': v} for k,v in sample.items()], indent=4)
[
{
"name": "PointInterpolator",
"size": 1675
},
{
"name": "ObjectInterpolator",
"size": 1629
},
{
"name": "RectangleInterpolator",
"size": 2042
}
]