列表sorted()报错

现在有一个一个列表:
files = ['T1.fas', 'T10.fas', 'T11.fas', 'T12.fas', 'T13.fas', 'T14.fas', 'T15.fas', 'T16.fas', 'T17.fas', 'T18.fas', 'T19.fas', 'T2.fas', 'T20.fas', 'T21.fas', 'T22.fas', 'T23.fas', 'T24.fas', 'T25.fas', 'T26.fas', 'T27.fas', 'T28.fas', 'T29.fas', 'T3.fas', 'T30.fas', 'T31.fas', 'T32.fas', 'T33.fas', 'T34.fas', 'T35.fas', 'T36.fas', 'T37.fas', 'T38.fas', 'T39.fas']
我想将其按照T后面的数字排列,即T1.fas,T2.fas.....

我是这样写的,但是报错了

sorted(files, key=lambda x: int(x.split('.')[0][1:]))
ValueError: invalid literal for int() with base 10: ''

请教该怎么写将他排序

阅读 2.5k
3 个回答

例子中的列表是没问题的。你看下你的数据里面是不是有一些值不规范,导致类型转换时传的是个空字符串: int('')

sorted(file, key=lambda d : int(d.split('.')[0].split('T')[-1]))

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题