Lin*_*tor 3 python sorting string prefix suffix
我需要对字符串列表进行排序,其形式为:
["ccc_3.23", "b_0.00", "b_-1.10", "aa_-2.37", "aa_3.05", "aa_-2.11", "ccc_9.8"]
Run Code Online (Sandbox Code Playgroud)
首先按前缀,然后按后缀,这样排序后的列表为:
["aa_-2.37", "aa_-2.11", "aa_3.05", "b_-1.17", "b_0.00", "ccc_3.23", "ccc_9.8"]
Run Code Online (Sandbox Code Playgroud)
前缀仅包含标准英文字母,并且可以是任意长度。另一方面,后缀始终是有符号浮点数,可能具有不同的位数。-1.3232、0.0 和 7.98 都是有效的后缀。
需要对列表进行排序,而在此过程中不更改其任何元素。我在网上尝试了多种不同的方法,但似乎没有一种方法能够涵盖这里的所有边缘情况。不幸的是,该列表是按原样格式化的,我对此无能为力。
我有什么办法可以做到这一点吗?
小智 7
你需要使用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']
Run Code Online (Sandbox Code Playgroud)