My Big Dict.
John Hunter
jdhunter at ace.bsd.uchicago.edu
Wed Jul 2 08:12:52 EDT 2003
>>>>> "Russell" == Russell Reagan <rreagan at attbi.com> writes:
drs> f = open('somefile.txt')
drs> d = {}
drs> l = f.readlines()
drs> for i in l:
drs> a,b = i.split('!')
drs> d[a] = b.strip()
I would make one minor modification of this. If the file were *really
long*, you could run into troubles trying to hold it in memory. I
find the following a little cleaner (with python 2.2), and doesn't
require putting the whole file in memory. A file instance is an
iterator (http://www.python.org/doc/2.2.1/whatsnew/node4.html) which
will call readline as needed:
d = {}
for line in file('sometext.dat'):
key,val = line.split('!')
d[key] = val.strip()
Or if you are not worried about putting it in memory, you can use list
comprehensions for speed
d = dict([ line.split('!') for line in file('somefile.text')])
Russell> I have just started learning Python, and I have never
Russell> used dictionaries in Python, and despite the fact that
Russell> you used mostly non-descriptive variable names, I can
Russell> still read your code perfectly and know exactly what it
Russell> does. I think I could use dictionaries now, just from
Russell> looking at your code snippet. Python rules :-)
Truly.
JDH
More information about the Python-list
mailing list