我有以下列表
keys = [u'3_sd', u'14_sd', u'16_sd', u'13_sd', u'4_sd', u'18_sd', u'22_sd', u'1_sd', u'6_sd', u'7_sd', u'15_sd', u'21_sd', u'19_sd', u'10_sd', u'2_sd', u'17_sd', u'8_sd', u'11_sd', u'9_sd', u'12_sd', u'5_sd', u'20_sd']
当我将它排序为keys.sort()时,结果是
[u'10_sd',u'11_sd',u'12_sd',u'13_sd',u'14_sd',u'15_sd',u'16_sd',u'17_sd',u'18_sd',u'19_sd',u'1_sd',u'20_sd',u'21_sd',u'22_sd',u'2_sd',u'3_sd',u'4_sd',u'5_sd',u'6_sd',u'7_sd',u'8_sd',u'9_sd']
但我需要他们按照数字升序排序,如
[u'1_sd',u'2_sd',u'3_sd',u'4_sd',u'5_sd',u'6_sd'.......]
我在google sorted(keys, key=int)
上看到了其他一些方法,由于列表中的元素是字符串,所以在我的情况下不起作用,所以有没有办法按升序对它们进行排序而不操作列表中的数据?
答案 0 :(得分:2)
只需使用足够复杂的key
。
key=lambda x: int(x.split('_')[0])