我需要對字串串列進行排序,其形式為:
["ccc_3.23", "b_0.00", "b_-1.10", "aa_-2.37", "aa_3.05", "aa_-2.11", "ccc_9.8"]
首先按前綴,然后按后綴,這樣排序的串列是:
["aa_-2.37", "aa_-2.11", "aa_3.05", "b_-1.17", "b_0.00", "ccc_3.23", "ccc_9.8"]
前綴僅包含標準英文字母,并且可以是任意長度。另一方面,后綴始終是帶符號的浮點數,可能具有不同的位數。-1.3232、0.0 和 7.98 都是有效的后綴。
串列需要在不改變程序中的任何元素的情況下進行排序。我在網上嘗試了許多不同的方法,但似乎沒有一個能涵蓋這里的所有邊緣情況。不幸的是,該串列按原樣格式化,我對此無能為力。
有什么辦法可以讓我這樣做嗎?
uj5u.com熱心網友回復:
你需要key在排序中使用
a = ["ccc_3.23", "b_0.00", "b_-1.10", "aa_-2.37", "aa_3.05", "aa_-2.11", "ccc_9.8"]
a.sort(key=lambda x: (x.split("_")[0], float(x.split("_")[1])))
a
# output : ['aa_-2.37', 'aa_-2.11', 'aa_3.05', 'b_-1.10', 'b_0.00', 'ccc_3.23', 'ccc_9.8']
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/526375.html
上一篇:排序新聞api端點
