Abhishek Tiwari wrote: > *Question :* > The first list contains some items, and the second list contains their > value (higher is better). > > items = [apple, car, town, phone] > values = [5, 2, 7, 1] > > Show how to sort the 'items' list based on the 'values' list so that you > end up with the following two lists: > > items = [town, apple, car, phone] > values = [7, 5, 2, 1] > > *Ans. 1* > > values, items = list(zip(*sorted(zip(values,items), reverse=True))) > > *Ans. 2* > new_values = sorted(values, reverse=True) > new_items = [items[x] for x in map(values.index,new_values)] > > > I would like to know which method is better and why?
Don't know about being better, but this is another alternative: >>> keygen = iter(values) >>> sorted(items, key=lambda x: next(keygen), reverse=True) I'm thinking that maybe sorted/sort should accept a keylist= argument that takes a list/tuple/iterable of keys, so we can write it like this: >>> sorted(items, keylist=values, reverse=True) what do you think? _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor