import re
def natural_key(astr):
        """See http://w...content-available-to-author-only...r.com/blog/archives/001018.html"""
        return [int(s) if re.match(r'\d+$', s)else s for s in re.split(r'(\d+)', astr)]


a = [{'cavity' : '11A', 'ltg_nr' : 'Ltgnr11A'},
        {'cavity' : '20', 'ltg_nr' : 'Ltgnr20'},
        {'cavity' : '10', 'ltg_nr' : 'Ltgnr10'},
        {'cavity' : '17B', 'ltg_nr' : 'Ltgnr17B'},
        {'cavity' : '1K', 'ltg_nr' : 'Ltgnr1K'},
        {'cavity' : '11A', 'ltg_nr' : 'Ltgnr11A'},
        {'cavity' : '11A', 'ltg_nr' : 'Ltgnr11A'},
        {'cavity' : '22', 'ltg_nr' : 'Ltgnr22'},
        {'cavity' : '21A', 'ltg_nr' : 'Ltgnr21A'},
        {'cavity' : '21C', 'ltg_nr' : 'Ltgnr21C'},
        {'cavity' : '21B', 'ltg_nr' : 'Ltgnr170'},
        {'cavity' : '101', 'ltg_nr' : 'Ltgnr170'},
        {'cavity' : '22AA', 'ltg_nr' : 'Ltgnr170'},
        {'cavity' : '100A', 'ltg_nr' : 'Ltgnr170'}]

import pprint
pprint.pprint(sorted(a, key=lambda d: natural_key(d['cavity'])))
