如何按升序对字符串列表(包含数字)进行排序

时间:2018-05-23 16:41:11

标签: python string list sorting

我知道这是一个非常基本的问题但是从我在搜索时看到的答案中我找不到足够好的东西。

我使用mylist = os.listdir(<folder_path>)时收到的文件名如下:

['file.0', 'file.1', 'file.10', 'file.100', 'file.2', 'file.3']  

我希望按照这样的升序对此列表进行排序:

['file.0', 'file.1', 'file.2', 'file.3', 'file.10', 'file.100']  

我尝试使用mylist.sort()但它离开列表时没有任何更改。 sorted()函数也不做任何更改。

一种解决方法是将数字与字符串分开,并将它们转换为整数到新数组:

[0, 1, 10, 100, 2, 3]  

然后对它们进行排序:

[0, 1, 2, 3, 10, 100]  

然后我需要一个函数"file." + i

但有更好的方法吗?

我注意到Windows做到了,我认为他们正在做一些刺激分类: enter image description here

1 个答案:

答案 0 :(得分:1)

我建议使用JpaSpecificationRepository,它会将您的列表元素拆分为split('.')。如果您随后将最后一个元素强制转换为.,则可以将其用作排序键:

int

返回:

sorted(mylist, key = lambda x: int(x.split('.')[-1]))