On Mar 22, 9:41 am, "alain" <[EMAIL PROTECTED]> wrote: > I have a problem I wonder if it has been solved before. > I have a dictionnary and I want the values in the dictionnary to be > annotated with the rank that would be obtained by sorting the values > > def annotate_with_rank(my_dict): > .... > return my_annotated_dict > > In other words, any value a_value would become a 2-tuple > (a_value,rank_of_a_value)
Try this: >>> from operator import itemgetter >>> my_dict = dict(a=10, b=5, c=8, d=12) >>> for rank, (key, value) in enumerate(sorted(my_dict.items(), >>> key=itemgetter(1))): ... my_dict[key] = (value, rank) >>> my_dict {'a': (10, 2), 'c': (8, 1), 'b': (5, 0), 'd': (12, 3)} -- http://mail.python.org/mailman/listinfo/python-list