Grabbing previous iteration in a dict

Yves Dorfsman yves at zioup.com
Fri May 9 10:57:11 EDT 2008


dannywebster at googlemail.com wrote:
>> You cannot rely on the elements of a dictionary being in any
>> particular order (dicts are internally hash tables), so the above
>> is almost certainly ont what you want.
> 
> 
> Hi - thanks for your reply.  How about if I made the dict into a list
> (of
> which I have done).  How would I then reference the previous item?
> Can they
> be indexed?

Yes, I ran in a situation similar to yours, I read the content of a file, 
and had to both keep the order of the lines in the original file, and create 
a dictionary from the lines. So I created a class that contained both a 
dictionary and a tuple containing the keys of the dictionary in the original 
order. Something like this:

class mydict(object):

   def __init__(self, filename):
     x = [ e.strip().split() for e in file(filename) ]
     self.ordered_lines = tuple([ e[0] for e in x ])
     self.dictionary = dict( zip(self.ordered_lines, [ e[1:] for e in x]) )

a = mydict('/some/file')
a.ordered_lines
a.dictionary



Yves.
http://www.SollerS.ca



More information about the Python-list mailing list