2015-05-01 350 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