我想對以下形式的串列進行排序:
['1000-1005', '6767-8787', '88-5607', '600-607', '909-950']
通過'-'符號之前的整數值,并在排序后存盤原始索引,所以是這樣的:
[(2, '88-5607'), (3, '600-607'), (4, '909-950'), (0, '1000-1005'), (1, '6767-8787')]
輸出串列中的元組包含原始索引位置,后跟排序值
是否有捷徑可尋?
如果我想在不保存原始索引的情況下按第一個數字排序,這可行:
sorted(list, key=lambda x: int(x.split('-')[0]))
如果我想在提取第一個整數值后保存原始索引,這可行:
sorted(enumerate(list), key=lambda i: i[1])
但是結合這些方法是行不通的,因為它們都吃掉了關鍵功能定義。
uj5u.com熱心網友回復:
嘗試:
res = sorted(enumerate(['1000-1005', '6767-8787', '88-5607', '600-607', '909-950']),
key=lambda x: int(x[1].split('-')[0]))
print(res)
印刷:
[(2, '88-5607'), (3, '600-607'), (4, '909-950'), (0, '1000-1005'), (1, '6767-8787')]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505445.html
上一篇:如何訪問串列中字典中的條件項
下一篇:來自兩個向量的不同數量元素的組合
