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'}]