sort array, apply rearrangement to second

Raymond Hettinger python at rcn.com
Wed Mar 31 16:09:54 EDT 2010


On Mar 30, 4:25 pm, s... at sig.for.address (Victor Eijkhout) wrote:
> I have two arrays, made with numpy. The first one has values that I want
> to use as sorting keys; the second one needs to be sorted by those keys.
> Obviously I could turn them into a dictionary  of pairs and sort by the
> first member, but I think that's not very efficient, at least in space,
> and this needs to be done as efficiently as possible.

Alf's recommendation is clean and correct.  Just make a list of
tuples.

FWIW, here's a little hack that does the work for you:

>>> values = ['A', 'B', 'C', 'D', 'E']
>>> keys = [50, 20, 40, 10, 30]
>>> keyiter = iter(keys)
>>> sorted(values, key=lambda k: next(keyiter))
['D', 'B', 'E', 'C', 'A']


Raymond



More information about the Python-list mailing list