Python dump dict для json файла
У меня есть такой тип:
sample = {'ObjectInterpolator': 1629, 'PointInterpolator': 1675, 'RectangleInterpolator': 2042}
Я не могу понять, как сбросить файл dict в файл json
, как показано ниже:
{
"name": "interpolator",
"children": [
{"name": "ObjectInterpolator", "size": 1629},
{"name": "PointInterpolator", "size": 1675},
{"name": "RectangleInterpolator", "size": 2042}
]
}
Есть ли питонический способ сделать это?
Вы можете догадаться, что я хочу создать treemap d3
.
Ответы
Ответ 1
import json
with open('result.json', 'w') as fp:
json.dump(sample, fp)
Это более простой способ сделать это.
Во второй строке кода создается файл result.json
и открывается как переменная fp
.
В третьей строке ваш dict sample
записывается в result.json
!
Ответ 2
d = {"name":"interpolator",
"children":[{'name':key,"size":value} for key,value in sample.items()]}
json_string = json.dumps(d)
Конечно, маловероятно, что порядок будет точно сохранен... Но это просто природа словарей...
Ответ 3
Объедините ответ @mgilson и @gnibbler, я нашел, что мне нужно:
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()
Таким образом, у меня есть файл json с довольно печатной версией.
Трюки print >> f, j
найдены здесь:
http://www.anthonydebarros.com/2012/03/11/generate-json-from-sql-using-python/
Ответ 4
Это должно дать вам начало
>>> 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
}
]