将名称转换为整数元组并比较元组:
def splittedname(s): return tuple(int(x) for x in s.split('.'))splittedname(s1) > splittedname(s2)更新 :由于您的姓名显然可以包含数字以外的其他字符,因此您需要检查
ValueError并保留所有无法转换为整数的值:
import redef tryint(x): try: return int(x) except ValueError: return xdef splittedname(s): return tuple(tryint(x) for x in re.split('([0-9]+)', s))要对名称列表进行排序,请使用以下命令
splittedname作为键功能
sorted:
>>> names = ['YT4.11', '4.3', 'YT4.2', '4.10', 'PT2.19', 'PT2.9']>>> sorted(names, key=splittedname)['4.3', '4.10', 'PT2.9', 'PT2.19', 'YT4.2', 'YT4.11']



