问题:如何将字典转储到json文件?
我有这样的命令:
sample = {'ObjectInterpolator': 1629, 'PointInterpolator': 1675, 'RectangleInterpolator': 2042}
我不知道如何将字典转储到json
文件,如下所示:
{
"name": "interpolator",
"children": [
{"name": "ObjectInterpolator", "size": 1629},
{"name": "PointInterpolator", "size": 1675},
{"name": "RectangleInterpolator", "size": 2042}
]
}
有python方式可以做到这一点吗?
您可能会猜到我想生成一个d3
树形图。
回答 0
import json
with open('result.json', 'w') as fp:
json.dump(sample, fp)
这是一种更简单的方法。
在第二行代码中,文件result.json
被创建并作为变量打开fp
。
在第三行中,您的字典sample
被写入result.json
!
回答 1
结合@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/
回答 2
d = {"name":"interpolator",
"children":[{'name':key,"size":value} for key,value in sample.items()]}
json_string = json.dumps(d)
当然,不可能完全保留顺序…但这只是字典的性质…
回答 3
这应该给你一个开始
>>> 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
}
]
回答 4
具有漂亮的打印格式:
import json
with open(path_to_file, 'w') as file:
json_string = json.dumps(sample, default=lambda o: o.__dict__, sort_keys=True, indent=2)
file.write(json_string)