Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按升序对列表排序_Python_List_Sorting - Fatal编程技术网

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]))
你说过了,它们是字符串,除非你提取数字,否则它们会像那样排序