sort_natural

emlib.misc.sort_natural(seq, key=None)[source]

sort a string sequence naturally

Sorts the sequence so that ‘item1’ and ‘item2’ are before ‘item10’

Parameters:
  • seq (list) – the sequence to sort

  • key (Optional[Callable[[Any], str]]) – a function to convert an item in seq to a string

Return type:

list

Examples

>>> seq = ["e10", "e2", "f", "e1"]
>>> sorted(seq)
['e1', 'e10', 'e2', 'f']
>>> sort_natural(seq)
['e1', 'e2', 'e10', 'f']
>>> seq = [(2, "e10"), (10, "e2")]
>>> sort_natural(seq, key=lambda tup:tup[1])
[(10, 'e2'), (2, 'e10')]