2013-06-11 4 views
85

У меня есть ДИКТ так:Python свалка ДИКТ в 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.

ответ

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

'print (j, file = f)' в Python 3.6 (вместо 'print >> f, j') – mjkrause

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

Это простой способ сделать это.

Во второй строке кода создается файл result.json как переменная fp.

В третьей строке ваш dict sample записывается в result.json!

+0

@Fermi результат JSON сортируется один. Как я могу остановить эту сортировку, когда вы сбрасываете ее в JSON –

+0

@ Датский Не знаю. Если у вас еще нет вопроса о вашей проблеме, вы должны создать новый вопрос, описывающий вашу проблему. (btw, я просто редактор этих сообщений) –

+0

Я также не знаю. Просто задайте новый вопрос, как предложил Ферми. – moobi