Hi, I have two lists, A and B, such that B is a subset of A.
I wish to sort A such that the elements in B are at the beginning of A, and keep the existing order otherwise, i.e. stable sort. The order of elements in B will always be correct. for example: A = [0,1,2,3,4,5,6,7,8,9,10] B = [2,3,7,8] desired_result = [2,3,7,8,0,1,4,5,6,9,10] At the moment I have defined a comparator function: def sort_by_in_list(x,y): ret = 0 if x in B: ret -= 1 if y in B: ret += 1 return ret and am using: A.sort(sort_by_in_list) which does produce the desired results. I do now have a few questions: 1.) Is this the most efficient method for up to around 500 elements? If not, what would be better? 2.) This current version does not allow me to choose a different list for B. Is there a bind_third function of some description that I could use to define a new function with 3 parameters, feed it the third (the list to sort by), and have the A.sort(sort_by_in_list) provide the other 2 variables? Regards to all, Cameron. -- http://mail.python.org/mailman/listinfo/python-list