2
我試着使用排序排序Python的排序方式名稱
dir =["A1","A2","A10","A3"]
sorted(dir)
我的預期陣列是
["A1","A2","A3","A10"]
,但實際結果是
["A1", "A10", "A2", "A3"]
如何通過在Python名稱排序數組?
我試着使用排序排序Python的排序方式名稱
dir =["A1","A2","A10","A3"]
sorted(dir)
我的預期陣列是
["A1","A2","A3","A10"]
,但實際結果是
["A1", "A10", "A2", "A3"]
如何通過在Python名稱排序數組?
它按字母順序排序,因此您需要分解數字並將它們轉換爲整數並對其進行排序。 (字符串中的數字被視爲只是字符,所以它會「看到」「A10」,並嘗試首先按「A」,然後按「1」,然後按「0」對其進行排序。例如:
>>> sorted(dir, key=lambda x: int(x[1:]))
['A1', 'A2', 'A3', 'A10']
如果您要在dir
之外還有其他字母,除了「A」之外,您需要更復雜的排序方法,但它會沿着相同的方向。 (如果你解釋什麼dir
包含更多,我可以寫一個例子。)作爲mgilson的評論指出,如果dir
的元素遵循1個字符+數字格式,那麼你可以利用元組排序並做這樣的事情:
>>> dir.append('B12')
>>> sorted(dir, key=lambda x: (x[0],int(x[1:])))
['A1', 'A2', 'A3', 'A10', 'B12']
它可能會更好做'key = lambda x:(x [0],int(x [1:]))' – mgilson