On Sun, 30 Oct 2005 10:13:42 +0100, Peter Otten <[EMAIL PROTECTED]> wrote:
>Bengt Richter wrote: > [...] >> Now select from the second list, by first-element position correspondence: >> >>> [second[t[1]] for t in sorted((f,i) for i,f in enumerate(first))] >> ['E', 'D', 'C', 'B', 'A', 'J', 'I', 'H', 'G', 'F'] >> >> Which did the OP really want? ;-) > >I don't know, but there certainly is no subtle requirement to not provide >the key argument: > >>>> import operator >>>> first = [2]*5 + [1]*5 >>>> second = list(reversed("ABCDEFGHIJ")) >>>> [s for f, s in sorted(zip(first, second))] >['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] >>>> [s for f, s in sorted(zip(first, second), key=operator.itemgetter(0))] >['E', 'D', 'C', 'B', 'A', 'J', 'I', 'H', 'G', 'F'] > D'oh yeah, forgot about key ;-/ (and this kind of problem probably at least partly motivated its introduction, so it should have jumped to mind). Thanks, your version is much cleaner ;-) Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list