On Mon, 30 Apr 2007 12:50:58 -0500, Hamilton, William wrote: >> On quick question, how can I order a dict by the 'values' (not keys) >> before >> looping? Is that possible? >> > > The easiest way I can think of is to create a new dict that's reversed. > > reverseDict = {} > for key in dict1: > if dict1[key] not in reverseDict: > reverseDict[dict1[key]]=[key] > else: > reverseDict[dict1[key]].append(key) > > This gives you a dictionary that has the old dict's values as keys, and > the old dict's keys as lists of values. You can then sort the keys of > this dict and do what you want with it. Of course, the values in dict1 > have to be valid dictionary keys for this to work. If they aren't, you > may be able to get away with converting them to strings.
Oh man, maybe you need to re-think what you consider "easier". for value in dict1.itervalues() do_something_with(value) If you need the keys as well: for key, value in dict1.iteritems() do_something_with(key, value) If you need to process the values (say, sort them) first: pairs = list(dict1.iteritems()) # or dict1.items() pairs.sort() for key, value in pairs: do_something_with(key, value) I'll leave sorting by value instead of key as an exercise. -- Steven D'Aprano -- http://mail.python.org/mailman/listinfo/python-list