> -----Original Message----- > From: Steven D'Aprano > Sent: Monday, April 30, 2007 10:14 PM > To: python-list@python.org > Subject: RE: Dict Copy & Compare > > 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)
This iterates through a list of values, with no information about the keys at all. Not particularly applicable to the OP's needs. > If you need the keys as well: > > for key, value in dict1.iteritems() > do_something_with(key, value) This iterates through values and keys, in no particular order. Still not useful. > > 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. Hrmm. Maybe you missed the part where the OP was asking how to sort a dict's contents by value? I'm pretty sure I quoted it. My bit of code would be better if I had used iteritems() (I hadn't come across that function yet). But, it's a solution, and more useful than vague statements about what someone else needs to rethink and various bits of code that don't solve the problem presented. --- -Bill Hamilton -- http://mail.python.org/mailman/listinfo/python-list