2013-06-11 21 views
85

mam DICT tak:Python dict zrzut do pliku json

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

nie mogę dowiedzieć się, jak zrzucić dict do pliku json jak pokazano poniżej:

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

Czy czy istnieje pythonowy sposób na zrobienie tego?

Możesz zgadywać, że chcę wygenerować treemap d3.

Odpowiedz

8

Powinno to dać początek

>>> 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) 

Oczywiście, jest mało prawdopodobne, że zamówienie zostanie dokładnie zachowane ... Ale to tylko charakter słowników ...

+3

json_string = json.dumps (d,, sort_keys = True), jeśli pożądana jest kolejność sortowania. –

16

Kombajny odpowiedź @mgilson i @gnibbler, znalazłem co trzeba było to:

 

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() 
 

to w ten sposób, mam dość -print plik json. Sztuczki print >> f, j znajduje się tutaj: http://www.anthonydebarros.com/2012/03/11/generate-json-from-sql-using-python/

+0

'print (j, file = f)' w Pythonie 3.6 (zamiast 'print >> f, j') – mjkrause

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

Jest łatwiejszy sposób to zrobić.

W drugim wierszu kodu plik result.json zostaje utworzony i otwarty jako zmienna fp.

W trzeciej linii twój dyktat sample zostaje zapisany do result.json!

+0

@Fermi wynik JSON jest posortowany jeden.jako mogę zatrzymać ten sortin podczas wyrzucania go do JSON –

+0

@ Duński Nie wiem. Jeśli nie ma już pytania na temat Twojego problemu, powinieneś utworzyć nowe pytanie opisujące Twój problem. (przy okazji, jestem tylko redaktorem tych postów) –

+0

Ja też nie wiem. Po prostu zadaj nowe pytanie, takie jak zaproponował Fermi. – moobi