Ron Adam wrote: > Ron Adam wrote: >> Alex Martelli wrote: >>> Ron Adam <[EMAIL PROTECTED]> wrote: >>> ... >>>> Considering the number time I sort keys after getting them, It's the >>>> behavior I would prefer. Maybe a more dependable dict.sortedkeys() >>>> method would be nice. ;-) >>> >>> sorted(d) is guaranteed to do exactly the same thing as sorted(d.keys()) >>> AND to be faster (would be pretty weird if it weren't faster...!). >>> >>> E.g., ...: >>> >>> helen:~ alex$ python -mtimeit -s'd=dict(enumerate("tarazoplay"))' >>> 'sorted(d.keys())' >>> 100000 loops, best of 3: 6.82 usec per loop >>> >>> helen:~ alex$ python -mtimeit -s'd=dict(enumerate("tarazoplay"))' >>> 'sorted(d)' >>> 100000 loops, best of 3: 5.98 usec per loop >>> >>> >>> Alex >> >> >> Yes, it did decrease it. And simplified it as well. ;) >> >> def psort11(s1, s2): >> d = dict(zip(s2, s1)) >> assert len(d) == len(s1) >> sorted(d) >> s1[:] = d.values()
Dictionaries are not ordered, the "sorted" line does nothing except produce a sorted list of the dictionary's keys which is ignored. > This probably should be: > > def psort11(s1, s2): > d = dict(zip(s2,s1)) > assert len(d) == len(s1) > s1[:] = list(d[v] for v in sorted(d)) You could do this to avoid all of those lookups: def psort_xx(s1, s2): pairs = sorted(dict(zip(s2, s1)).iteritems()) assert len(pairs) == len(s1) s1[:] = [s1_value for s2_value, s1_value in pairs] -- -Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list