python – How can I use pickle to save a dict?
python – How can I use pickle to save a dict?
Try this:
import pickle
a = {hello: world}
with open(filename.pickle, wb) as handle:
pickle.dump(a, handle, protocol=pickle.HIGHEST_PROTOCOL)
with open(filename.pickle, rb) as handle:
b = pickle.load(handle)
print a == b
import pickle
your_data = {foo: bar}
# Store data (serialize)
with open(filename.pickle, wb) as handle:
pickle.dump(your_data, handle, protocol=pickle.HIGHEST_PROTOCOL)
# Load data (deserialize)
with open(filename.pickle, rb) as handle:
unserialized_data = pickle.load(handle)
print(your_data == unserialized_data)
The advantage of HIGHEST_PROTOCOL
is that files get smaller. This makes unpickling sometimes much faster.
Important notice: The maximum file size of pickle is about 2GB.
Alternative way
import mpu
your_data = {foo: bar}
mpu.io.write(filename.pickle, data)
unserialized_data = mpu.io.read(filename.pickle)
Alternative Formats
- CSV: Super simple format (read & write)
- JSON: Nice for writing human-readable data; VERY commonly used (read & write)
- YAML: YAML is a superset of JSON, but easier to read (read & write, comparison of JSON and YAML)
- pickle: A Python serialization format (read & write)
- MessagePack (Python package): More compact representation (read & write)
- HDF5 (Python package): Nice for matrices (read & write)
- XML: exists too *sigh* (read & write)
For your application, the following might be important:
- Support by other programming languages
- Reading / writing performance
- Compactness (file size)
See also: Comparison of data serialization formats
In case you are rather looking for a way to make configuration files, you might want to read my short article Configuration files in Python
python – How can I use pickle to save a dict?
# Save a dictionary into a pickle file.
import pickle
favorite_color = {lion: yellow, kitty: red} # create a dictionary
pickle.dump(favorite_color, open(save.p, wb)) # save it into a file named save.p
# -------------------------------------------------------------
# Load the dictionary back from the pickle file.
import pickle
favorite_color = pickle.load(open(save.p, rb))
# favorite_color is now {lion: yellow, kitty: red}