gpt4 book ai didi

python - 根据另一个列表对一个列表进行排序,长度不均匀

转载 作者:行者123 更新时间:2023-12-02 19:35:20 25 4
gpt4 key购买 nike

假设我有两个列表,l1 和 l2:

l1 = [1,9,6,8,3]
l2 = [8,1]

列表 l2 将根据列表 l1 的顺序进行排序,因此在本例中:

l2_reordered = [1,8]

注意:列表 l2 将始终有 2 个具有不同值的项目。

我可以想到一种简单的循环方法来做到这一点,但这将是非常低效的。什么是Pythonic且有效的方法来做到这一点?

最佳答案

这是一个快速解决方案。首先构建一个 dict 将值映射到索引:

d = {v:i for i, v in enumerate(l1)}

然后用它来获取排序键:

r = sorted(l2, key=lambda v: d[v])

创建d的时间复杂度为O(len(l1)),排序的时间复杂度为O(len(l2)*log(len(l2)))。

关于python - 根据另一个列表对一个列表进行排序,长度不均匀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61119161/

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