Sort list as if it were numbers

Published: 2018-04-14 10:27:34 +0000
Categories: Python,




In BASH you might quite often use sort -n to ensure that strings are sorted as if they were numeric (i.e. so 12a,2a,4a is sorted into the order you'd expect based on the integers at the front).

There isn't a direct way to do this to a list in Python, so you need a wrapper to help implement the functionality

Similar to

  • BASH - sort -n

Based On


import re
def sorted_nicely( l ):
    """ Sorts the given iterable in the way that is expected.

    Required arguments:
    l -- The iterable to be sorted.


    convert = lambda text: int(text) if text.isdigit() else text
    alphanum_key = lambda key: [convert(c) for c in re.split('([0-9]+)', key)]
    return sorted(l, key = alphanum_key)

Usage Example

a = ['1a','12a','21c','3b','4a','5a']

print sorted(a)
# ['12a', '1a', '21c', '3b', '4a', '5a']

print sorted_nicely(a)
# ['1a', '3b', '4a', '5a', '12a', '21c']


alphanumeric, sorting, strings, sort, number, integer, numeric sort,

Latest Posts

Urldecode string (LUA)
FFMPEG Convert YUV444p to YUV420p (BASH)
Forcing FFMPEG to honour segment length in HLS Stream Creator (BASH)
Force CURL to place request to a specific IP (BASH)
Set a variable only if it is undefined (Javascript)
Ignore query string with Nginx caching proxy (NGinx)
Get breakdown of UK and non-UK votes for a Parliamentary Petition (Python)
Decompress Mozilla Firefox jsonlz4 bookmark backup files (Python)
Setting Git author details for a single repo (Git)
Checking Virtual Machine Resource Allocations with Libvirt (BASH)

Copyright © 2019 Ben Tasker | Sitemap | Privacy Policy
Available at and snippets.6zdgh5a5e6zpchdz.onion