Pickling un elenco costituito da valori 'n' 2 tuple
Domanda
Voglio scegliere un elenco in quanto mi ci vuole molto tempo per creare l'elenco. L'elenco è costituito da valori "N" a 2 tuple in cui il primo valore della tupla è un dizionario di grandi dimensioni (tasti da 1K a 10K) e il secondo valore è una stringa. N può essere grande come 100 a 1000. Vorrei salvare tale struttura di dati in modo da poterlo caricarla per comodità. Se l'elenco è leggibile dall'uomo sarebbe fantastico, ma non a costo delle prestazioni.
Sono a conoscenza Accantonare, Pyyaml, cpickle e JSON. Non sono sicuro di cosa usare date i miei dati. La lettura iniziale su vari altri thread su questo sito Web e Internet afferma che Cpickle potrebbe essere la scelta migliore. Qualche pensiero dai guru qui?
Soluzione
io userei cPickle
, funziona bene,
# Dummy data
from random import randint as r
a,b = 97,123
d = [(dict([(chr(r(a,b)),j) for j in range(1000)]),
''.join([chr(r(a,b)) for i in range(5)]))
for j in range(100)]
# Pickle it
import cPickle as pickle
f = open('store.dat','w')
pickle.dump(d,f)
f.close()
Considererei anche di usare qualcosa di simile Dumbdbm.
Aggiunto più tardi
A seguito dell'esempio sopra, puoi fare qualcosa del genere,
import dumbdbm as dbm
g = dbm.open('store.db')
g.update([(str(i),pickle.dumps(j)) for i,j in enumerate(d)])
g.close()