[Tutor] Writing dictionaries to a file
Kent Johnson
kent37 at tds.net
Tue Apr 8 13:42:36 CEST 2008
W W wrote:
> I was toying around with dictionaries/files/etc, and it's possible to
> loop over the dictionary, writing each key/value pair to the file on
> one line with a comma between them
> And if you knew certain values might be ints, you could use
>
> try: mydict[int(row[0])] = row[1]
This is converting the key, not the value.
>
> except ValueError: mydict[row[0]] = row[1]
And if the value looks like an int but shouldn't be interpreted as one?
For example a zip code?
This is getting crazy enough that I have to show how easy it is to do
with pickle. I used a dict with a mix of types for both keys and values
to show that they are restored correctly:
To save a dict in a pickle:
In [27]: from pickle import dump, load
In [38]: d = { 'a':1, 'b':'2', ('c', 'd'):(3, 4) }
In [39]: f=open('pickle.dat', 'w')
In [40]: dump(d, f)
In [41]: f.close()
To load the dict back:
In [42]: f=open('pickle.dat')
In [43]: d2=load(f)
In [44]: f.close()
In [45]: d2
Out[45]: {'a': 1, 'b': '2', ('c', 'd'): (3, 4)}
Note that this is the simplest example. There are some performance
improvements possible - use a binary pickle protocol and cPickle - but
for most usage I don't think you will notice the difference.
Kent
More information about the Tutor
mailing list