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