2015-05-01 128 views
0

我想以按名称排序与字符串列表:按文件名在Python排序列表

我想以下几点:

a = ["Datei", "Datei-1", "Datei-2", "Datei-3", "Datei-4", "Datei-5", "Datei-6", "Datei-7", "Datei-8", "Datei-9", "Datei-10", "Datei-11", "Datei-12", "Datei-13", "Datei-14", "Datei-15", "Datei-16"] 

我有以下几点:

a = ["Datei", "Datei-1", "Datei-10", "Datei-11", "Datei-12", "Datei-13", "Datei-14", "Datei-15", "Datei-16" , "and so on"] 

我试过了:

sorted(a) 
+0

你可能要使用自定义如文档 – paddyg

回答

0

我们可以通过分割字符串进行排序,然后按数字值进行排序。但是你的第一个元素缺少值,所以我们可以把那个第一,作为元素0

def sort_func(entry): 
    try: 
     return int(x.split('-')[1]) 
    except IndexError: 
     return 0 

new_a = sorted(a, key=sort_func) 

回报

['Datei', 'Datei-1', 'Datei-2', ..., 'Datei-9', 'Datei-10', 'Datei-11', ...]

+0

中所述的比较功能,我不认为这就是Flomax所要求的。此外,你的建议不会失败的列表中的第一个元素,其中没有数字部分? –

+0

如果这不是他要求的......那么我不知道。我在编辑中为第一项做了适当的排序功能,谢谢。 – Symmitchry

1
In [1896]: a = ["Datei", "Datei-1","Datei-2", "Datei-10", "Datei-11", "Datei-12", "Datei-13", "Datei-14", "Datei-15", "Datei-16" , ] 

In [1897]: sorted(a, key=lambda v:int(v.split('-')[-1]) if '-' in v else 0) 
Out[1897]: 
['Datei', 
'Datei-1', 
'Datei-2', 
'Datei-10', 
'Datei-11', 
'Datei-12', 
'Datei-13', 
'Datei-14', 
'Datei-15', 
'Datei-16'] 
+0

这不是什么被问到 – njzk2

+0

@ njzk2啊,我很抱歉,误解了这个问题。已经更新了答案。 – fixxxer