我需要对表格中的字符串列表进行排序:
["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都是有效后缀。
列表需要在不改变流程中的任何元素的情况下进行排序。我尝试过许多不同的方法,从网络,但似乎没有涵盖每一个边缘的情况。不幸的是,列表被格式化为- is,我不能对它做任何事情。
有什么办法可以让我这么做吗?
发布于 2022-11-02 05:41:40
您需要在排序中使用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://stackoverflow.com/questions/74284758
复制相似问题