2013-06-11 14 views
85

私はこのような辞書があります。下記に示すように私はjsonファイルへの辞書をダンプする方法を見つけ出すことはできませんPythonのダンプ辞書

sample = {'ObjectInterpolator': 1629, 'PointInterpolator': 1675, 'RectangleInterpolator': 2042} 

{  
    "name": "interpolator", 
    "children": [ 
     {"name": "ObjectInterpolator", "size": 1629}, 
     {"name": "PointInterpolator", "size": 1675}, 
     {"name": "RectangleInterpolator", "size": 2042} 
    ] 
} 

はですこれを行うためのpythonic方法がありますか?

私はd3のツリーマップを生成したいと思うかもしれません。

答えて

8

これはあなたに開始もちろん

>>> 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 
    } 
] 
15
d = {"name":"interpolator", 
    "children":[{'name':key,"size":value} for key,value in sample.items()]} 
json_string = json.dumps(d) 

を与える必要があり、それは順序が正確に保存される可能性は低いです...しかし、それは辞書のちょうど自然の...

+3

json_string = json.dumps(d、、sort_keys = True)ソート順が必要な場合。 –

16

コンバイン私は私が必要なものを見つけ@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() 
 

また、私はかなりです-print jsonファイル。 トリックprint >> f, jはここから発見された: http://www.anthonydebarros.com/2012/03/11/generate-json-from-sql-using-python/

+0

Python 3.6の 'print(f、j'の代わりに)' print(j、file = f) ' – mjkrause

139
import json 
with open('result.json', 'w') as fp: 
    json.dump(sample, fp) 

これはそれを行うための簡単な方法です。

コードの2行目で、ファイルresult.jsonが作成され、変数fpとして開かれます。

3行目では、sampleresult.jsonに書き込まれます。

+0

@Fermi結果JSONはソートされています。このソートをJSONにダンプしながら停止できますか? –

+0

@デンマーク語わからない。あなたの問題について既に問題がない限り、問題を説明する新しい質問を作成する必要があります。 (btw、私は単にそれらの投稿の編集者です) –

+0

私も知りません。フェルミのような新しい質問をお願いします。 – moobi