/ / Qual è il modo consigliato per memorizzare dizionari e tipi di file json in python - python, json, dictionary, formatting, storage

Qual è il modo consigliato per memorizzare dizionari e tipi di file json in python - python, json, dictionary, formatting, storage

Sto prelevando i dati JSON da un'API. Il mio script memorizzerà questi dati e aggiungerà informazioni su questi dati a un dizionario.

Per memorizzare i dati JSON, sto pensando di utilizzare:

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

Quale sarebbe un modo appropriato per memorizzare il dizionario? Sarebbe opportuno convertire il dict in formato json con

json_str = json.dumps(dict1)

e salvarlo come sopra?

risposte:

4 per risposta № 1

Dovresti salvare i dati JSON in un Python list o a dict, a seconda della struttura dei dati JSON.

A partire dal http://www.json.org/:

JSON è costruito su due strutture:

  • Una raccolta di coppie nome / valore. In varie lingue, questo è realizzato come oggetto, record, struct, dizionario, tabella hash, con chiave elenco o array associativo.
  • Un elenco ordinato di valori. Nella maggior parte lingue, questo è realizzato come una matrice, vettore, lista o sequenza.

Il json la libreria è ciò che viene comunemente usato per caricare i dati JSON e memorizzarli in un oggetto Python load il metodo restituirà (in modo ricorsivo) un Python elenco se i dati JSON sono simili [...] e un Python dict se i dati JSON sono simili {...}.

Per leggere un file JSON contenente a {...} e salvare il suo contenuto in una struttura dati del dizionario usa:

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

Se il file contiene un elenco JSON [...] poi:

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

Allo stesso modo quando si leggono i dati JSON da un URL:

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

Puoi sempre convertire una lista in un dizionario per esempio in questo modo:

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

In tal modo, tuttavia, si perdono le informazioni sull'ordine fornite dalla struttura dell'array JSON.


1 per risposta № 2

Di solito io uso dicts per la memorizzazione dei dati e la conversione da / a JSON solo per trasferire i dati via web. JSON non è un tipo nativo per Python, quindi sarebbe meglio lavorare con i tipi nativi di Python.