> If you don't want to build the intermediary dict, a > less efficient > version that runs in O(n^2): > > a.sort(key=lambda k: b.index(k[1])) > > Which is mostly similar to John's solution, but still > more efficient > because it only does a b.index call once per 'a' > item instead of twice > per comparison. >
Very nice! This solution is pretty much a direct transliteration of the original problem, as the OP *might* have articulated it: List A consists of ordered pairs. Sort list A according to the position in list B of the pair's second member. A solution is truly "Pythonic" when it possesses this directness. -John -- http://mail.python.org/mailman/listinfo/python-list