Python 按升序对列表排序
我有以下清单Python 按升序对列表排序,python,list,sorting,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()一样对其排序时,结
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上看到了一些其他的排序方法(keys,key=int),这在我的例子中不起作用,因为列表中的元素是字符串,所以有没有一种方法可以在不操纵列表中的数据的情况下按升序排序?只需使用足够复杂的
键即可
key=lambda x: int(x.split('_')[0])
您必须将适当的部分转换为整数,例如int(item.split(''u',1)[0])
,并将其用作键。您正在处理字符串,python将按字面顺序对其进行排序。如果要根据第一个数字进行排序,则需要拆分字符串并将数字转换为整数sorted(keys,key=lambda x:int(x.split(“”“)[0]))
你说过了,它们是字符串,除非你提取数字,否则它们会像那样排序