Ordered dictionary?
Paul McGuire
ptmcg at users.sourceforge.net
Thu Jan 22 16:19:07 EST 2004
"Leif K-Brooks" <eurleif at ecritters.biz> wrote in message
news:leWPb.231$af7.162835 at newshog.newsread.com...
> I need to associate a string (key) with an integer (value). A dictionary
> would do the job, except for the fact that it must be ordered. I also
> need to look up the value for a specific key easily, so a list of tuples
> wouldn't work.
>
If you really need to access the dictionary in sorted key order, is this so
difficult?
dKeys = d.keys()
dKeys.sort()
for k in dKeys:
# do stuff with k and d[k], such as:
print k, "=", d[k]
Or if you are worried about updates to d between the time of key retrieval
and time of traversal (for instance, if a separate thread were to delete one
of the keyed entries), take a snapshot as a list:
dItems = d.items() # from here on, you are insulated from changes to
dictionary 'd'
dItems.sort() # implicitly sorts by key
dItems.sort( lambda a,b: a[1]-b[1] ) # sorts by value, if you so prefer
for k,v in dItems:
# do stuff with k and v, such as:
print k, "=", v # <-- added benefit here of not re-accessing
the list by key
-- Paul
More information about the Python-list
mailing list