在python中排序字母数字字典键

Joh*_*son 4 python sorting dictionary

我有一个字典,如A1-A15,B1-B15等.运行dictionary.keys().sort()导致A1,A10,A11 ......

def sort_keys(dictionary):
    keys = dictionary.keys()
    keys.sort()
    return map(dictionary.get, keys)
Run Code Online (Sandbox Code Playgroud)

如何对它进行排序以使它们按正确的顺序排列,即A1,A2,A3 ...?

ken*_*ytm 9

keys.sort(key=lambda k:(k[0], int(k[1:])) )
Run Code Online (Sandbox Code Playgroud)

编辑:这将失败的键不像A23,例如AA12将停止程序.在一般情况下,请参阅natsort函数的Python模拟(使用"自然顺序"算法对列表进行排序).