sort one list using the values from another list

Steven Bethard steven.bethard at gmail.com
Sun Feb 26 12:00:37 EST 2006


Brian Blais wrote:
> Hello,
> 
> I have two lists, one with strings (filenames, actually), and one with a 
> real-number
> rank, like:
> 
> A=['hello','there','this','that']
> B=[3,4,2,5]
> 
> I'd like to sort list A using the values from B, so the result would be 
> in this example,
> 
> A=['this','hello','there','that']

Here's a solution that makes use of the key= argument to sorted():

 >>> A = ['hello','there','this','that']
 >>> B = [3,4,2,5]
 >>> indices = range(len(A))
 >>> indices.sort(key=B.__getitem__)
 >>> [A[i] for i in indices]
['this', 'hello', 'there', 'that']

Basically, it sorts the indices to A -- [0, 1, 2, 3] -- in the order 
given by B, and then selects the items from A in the appropriate order.




More information about the Python-list mailing list