/ / Jaki jest zalecany sposób przechowywania słowników i typu pliku json w python - python, json, słownik, formatowanie, przechowywanie

Jaki jest zalecany sposób przechowywania słowników i typu pliku json w python - python, json, słownik, formatowanie, przechowywanie

Pobieram dane JSON z interfejsu API. Mój skrypt zapisuje te dane i dodaje informacje o tych danych do słownika.

Aby przechowywać dane json, planuję użyć:

with open("data.json", "w") as f:
json.dump(data, f)

Jaki byłby właściwy sposób przechowywania słownika? Czy byłoby właściwe przekonwertować dyktor na format json z

json_str = json.dumps(dict1)

i zapisać go w taki sam sposób jak powyżej?

Odpowiedzi:

4 dla odpowiedzi № 1

Powinieneś zapisać dane JSON w Pythonie list lub dict, w zależności od struktury danych JSON.

Od http://www.json.org/:

JSON zbudowany jest na dwóch strukturach:

  • Zbiór par nazwa / wartość. W różnych językach realizuje się to jako obiekt, rekord, strukturę, słownik, tablicę skrótów, klawisze lista lub tablica asocjacyjna.
  • Zamówiona lista wartości. W większości języków, jest to realizowane jako tablica, wektor, lista lub sekwencja.

The json biblioteka jest często używana do ładowania danych JSON i przechowywania ich w obiekcie Python load metoda zwróci (rekurencyjnie) język Python lista jeśli dane JSON są podobne [...] i Python dyktować jeśli dane JSON są podobne {...}.

Aby odczytać plik JSON zawierający plik {...} i zapisać jego zawartość do użycia struktury danych słownika:

>>> with open("data.json", "r") as f:
...   data = json.load(f)
...
>>> type(data)
<type "dict">

Jeśli plik zawiera listę JSON [...] następnie:

>>> type(data)
<type "list">

Podobnie podczas odczytu danych JSON z adresu URL:

>>> response = urllib2.urlopen(URL)
>>> data = json.load(response)

Zawsze możesz przekonwertować listę na słownik, na przykład tak:

>>> dataD = dict([i,data[i]] for i in xrange(len(data)))

Robiąc to jednak tracisz informacje o zamówieniu dostarczone przez strukturę tablicy JSON.


1 dla odpowiedzi nr 2

Zwykle używam dyktowania do przechowywania danych i konwertowania z / do JSON tylko w celu przesyłania danych przez Internet. JSON nie jest rodzimym typem dla Pythona, więc lepiej byłoby pracować z natywnymi typami Pythona.