gpt4 book ai didi

python - 使用引用顺序的自定义排序列表

转载 作者:太空宇宙 更新时间:2023-11-04 09:16:31 24 4
gpt4 key购买 nike

我想按每行第一个索引 0 中的值对数组进行排序。该数组具有以下形式:

['AAA', 1, 2, -1]
['BB+', 3, 2, 1]
['AA-', 5, 4, 1]
['AA+', 4, 2, 2]

正如您可能看到的那样,我想按一些信用评级进行排序。不幸的是,仅使用内置函数进行排序并不能提供正确的顺序。我想做的是以某种方式指定顺序,例如:

correct_order = ['AAA', 'AA+',...,'BBB+', 'BBB', 'BB+',...]

我可以想象有无数种方法可以实现这一点,可能没有指定它。我不担心性能,因为我永远不会处理超过 22 行。

需要强调的重要一点是,排序将基于每行中的索引 0,但保留数组的其余部分。此外,不能保证数组将包含 correct_order 列表中的每个“评级”。

我曾在论坛上看到过类似问题的解释,但无法将它们适应我的数据集。非常感谢任何有关最简单解决方案的帮助。

最佳答案

作为您的键,您可以在正确排序的评级字符串列表中使用评级字符串的索引:

>>> correct_order = ['AAA', 'AA+', 'BBB+', 'BBB', 'BB+']
>>> list(sorted("BBB BBB+ BB+ AAA AA+ BBB+ BBB AA+".split(), key=lambda s:correct_order.index(s)))
['AAA', 'AA+', 'AA+', 'BBB+', 'BBB+', 'BBB', 'BBB', 'BB+']

使其适应您的特定数据集(评级字符串位于列表列表中每个列表的第一个元素中):

correct_order = ['AAA', 'AA+',...,'BBB+', 'BBB', 'BB+',...]
the_lists.sort(key=lambda l: correct_order.index(l[0]))

关于python - 使用引用顺序的自定义排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8796553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com