나는 다음과 같은 dict가 있습니다 :
sample = {'ObjectInterpolator': 1629, 'PointInterpolator': 1675, 'RectangleInterpolator': 2042}
json
아래 그림과 같이 dict을 파일로 덤프하는 방법을 알 수 없습니다 .
{
"name": "interpolator",
"children": [
{"name": "ObjectInterpolator", "size": 1629},
{"name": "PointInterpolator", "size": 1675},
{"name": "RectangleInterpolator", "size": 2042}
]
}
이것을 할 파이썬적인 방법이 있습니까?
d3
트리 맵 을 생성하고 싶을 수도 있습니다 .
답변
import json
with open('result.json', 'w') as fp:
json.dump(sample, fp)
이것은 더 쉬운 방법입니다.
코드의 두 번째 줄에서 파일 result.json
이 만들어지고 변수로 열립니다 fp
.
세 번째 줄에서 당신의 dict sample
은 result.json
!
답변
@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/
답변
d = {"name":"interpolator",
"children":[{'name':key,"size":value} for key,value in sample.items()]}
json_string = json.dumps(d)
물론 순서가 정확하게 유지되지는 않지만 … 사전의 본질입니다 …
답변
이것은 당신에게 시작을 제공해야합니다
>>> 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
}
]
답변
예쁜 인쇄 형식으로 :
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)