按升序排序列表python

时间:2016-07-21 06:12:40

标签: python list sorting

我有以下列表

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)上看到了其他一些方法,由于列表中的元素是字符串,所以在我的情况下不起作用,所以有没有办法按升序对它们进行排序而不操作列表中的数据?

1 个答案:

答案 0 :(得分:2)

只需使用足够复杂的key

key=lambda x: int(x.split('_')[0])