关于python列表嵌套字典的排序问题,如何得到以下的结果呢

a = [
    {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211888'},
    {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211688'},
    {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211882'},
    {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321686'},
    {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321688'},
    {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321488'},
    {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '531686'},
    {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '121686'},
    {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '131688'},
    {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '351688'}]

# 只对如果'VesCellNo'的值的字符串前两位相同的情况下进行排序如21和32,
# #并且先按照这个字串的第三四位排序且小的排在前面例如211688应该排在21188前面因为16小于18,
# #若第三四位也相同则按照第五六位排序且大的排在前面例如321688应该排在321686前面因为88大于86
# #希望得到数组如下
b = [{'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211688'},
     {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211888'},
     {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211882'},
     {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321488'},
     {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321688'},
     {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321686'},
     {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '531686'},
     {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '121686'},
     {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '131688'},
     {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '351688'}]

 

a = [
    {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211888'},
    {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211688'},
    {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211882'},
    {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321686'},
    {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321688'},
    {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321488'},
    {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '531686'},
    {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '121686'},
    {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '131688'},
    {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '351688'}]

b_21_32 = [x for x in a if x["VesCellNo"].startswith("21") or x[“VesCellNo"].startswith("32")]
c_rest = [x for x in a if not x["VesCellNo"].startswith("21") and not x["VesCellNo"].startswith("32")]

def sort_key(x):
    v = x["VesCellNo"]
    n = int(v)
    t = n % 100
    n = int(n / 100) * 100 + 99 - t
    return n

b_21_32.sort(key = sort_key)

d = b_21_32 + c_rest

print(d)



# Output:
[{'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211688'},
 {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211888'}, 
 {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '211882'}, 
 {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321488'}, 
 {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321688'}, 
 {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '321686'}, 
 {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '531686'}, 
 {'CtnNo': 'GATU8780448', 'sizeType': '40', 'VesCellNo': '121686'}, 
 {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '131688'}, 
 {'CtnNo': 'GVCU5272950', 'sizeType': '40', 'VesCellNo': '351688'}]