如何按前缀字母表顺序和后缀数字大小对 Python 字符串进行排序?

3

我需要对一个字符串列表进行排序,格式如下:

["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 都是有效的后缀。

需要对列表进行排序,而在此过程中不能改变其任何元素。我已经尝试了来自网络各个方面的许多不同方法,但似乎没有一个方法能涵盖这里的每一个边界案例。不幸的是,该列表是按原样格式化的,我无法对其进行任何操作。

是否有任何方法可以做到这一点?

1个回答

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']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接