|
Kent Engström |
at Apr 10, 2010 at 11:31 am
|
⇧ |
| |
Ben Racine <i3enhamin at gmail.com> writes:
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?
I use code like the hack below to sort miscellaneous strings that
consist of mixed numerical and non-numerical parts.
import re
nsk_re = re.compile("([0-9]+)|([^0-9]+)")
def numeric_sort_key(x):
return [handle_int_nonint(i_ni) for i_ni in nsk_re.findall(x)]
def handle_int_nonint(int_nonint_tuple):
if int_nonint_tuple[0]:
return int(int_nonint_tuple[0])
else:
return int_nonint_tuple[1]
def numerically_sorted(l):
return sorted(l, key=numeric_sort_key)