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