Pythonic list reordering

Chris Rebert clp2 at rebertia.com
Thu Apr 8 19:58:39 EDT 2010


On Thu, Apr 8, 2010 at 4:01 PM, Joaquin Abian <gatoygata2 at gmail.com> wrote:
> On Apr 9, 12:52 am, Ben Racine <i3enha... at gmail.com> wrote:
>> I have a list...
>>
>> ['dir_0_error.dat', 'dir_120_error.dat', 'dir_30_error.dat', 'dir_330_error.dat']
>>
>> I want to sort it based upon the numerical value only.
>>
>> Does someone have an elegant solution to this?
>
> not sure about elegance, but my two cents:
>
>>> mylist = ['dir_0_error.dat', 'dir_120_error.dat', 'dir_30_error.dat', 'dir_330_error.dat']
>>> mylist = [(int(item.split('_')[1]), item) for item in mylist]
>>> mylist.sort()
>>> mylist = [item for idx, item in mylist]
>>> mylist
>
> ['dir_0_error.dat', 'dir_30_error.dat', 'dir_120_error.dat',
> 'dir_330_error.dat']

At least conceptually, that's how list.sort() with a key= argument
works internally (i.e. via Schwartzian transform).

Cheers,
Chris
--
http://blog.rebertia.com



More information about the Python-list mailing list