你只需要通過強制轉換爲int數字排序,使用最後一個字母打破平局:
lst = ['categoryc.2.file','categorya.1.file','categorya.2.file',
'categoryb.2.file','categoryb.1.file','categoryc.1.file']
def key(x):
spl = x.split(".",2)
return int(spl[1]),spl[0][-1]
lst.sort(key=key)
輸出:
['categorya.1.file', 'categoryb.1.file', 'categoryc.1.file',
'categorya.2.file', 'categoryb.2.file', 'categoryc.2.file']
如果你不關心順序一旦類別進行分組,然後只使用int
:
lst = ['categoryc.2.file','categorya.1.file','categorya.2.file',
'categoryb.2.file','categoryb.1.file','categoryc.1.file']
lst.sort(key=lambda x: int(x.split(".",2)[1]))
print(lst)
['categorya.1.file', 'categoryb.1.file', 'categoryc.1.file',
'categoryc.2.file', 'categorya.2.file', 'categoryb.2.file']
.sort
被就地所以你不需要建立任何其他列表。
_best_方式取決於你在做什麼,這個列表來自哪裏以及真實數據是什麼樣子。 – Cyphase
爲了簡單起見,我刪除了上下文。但我所擁有的是我想以特定順序閱讀的文件名列表。爲了實現這一點,我想按照主文章中所述的方式對列表重新排序。 – Samuel