Question

Je veux pickle une liste qu'il faut un long temps pour moi de créer la liste.La liste se compose de "n" 2-tuple de valeurs où le premier tuple de la valeur est un gros dictionnaire(1k à 10k touches) et la seconde valeur est une chaîne de caractères.N peut être aussi grand que 100 à 1000.Je voudrais enregistrer une telle structure de données afin que je puisse le charger sur la commodité.Si la liste est lisible par l'homme, ce serait génial, mais pas au détriment de la performance.

J'ai des connaissances sur Étagère, PyYaml, cPickle et JSON.Je suis juste pas sûr que l'utilisation compte tenu de mes données.À la première lecture sur divers autres fils sur ce site web et de l'internet dit que cPickle peut être le meilleur choix.Toutes les pensées de l'gourous ici?

Était-ce utile?

La solution

Je voudrais utiliser cPickle, cela fonctionne bien,

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

Je voudrais également envisager d'utiliser quelque chose comme dumbdbm.

Ajouté plus tard

D'après l'exemple ci-dessus, vous pouvez faire quelque chose comme ceci,

import dumbdbm as dbm

g = dbm.open('store.db')
g.update([(str(i),pickle.dumps(j)) for i,j in enumerate(d)])
g.close()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top