两个不对等列表,如何按照另一个顺序排序?

list_1 = [3, 4, 6, 0]
base_list = [6, 5, 3, 4, 8, 7, 0]

如果希望list_1里面的值,按照base_list中的顺序排序,如何做比较快

list_1的最终输出期望是: [6, 3, 4, 0]

阅读 1.4k
1 个回答

写了两种,各循环了一百万次,但时间上没差多少。

你可以自己比较一下原始数组更多的情况下。

image.png

# 第一种
list_2 = [i for i in base_list if i in list_1]

# 第二种
map = dict(zip(base_list, count()))
list_3 = sorted(list_1, key=lambda i: map[i])

P.S. 也有库专门干这种活儿的,比如 more_itertools 啥的,想用的话看文档。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题