📌  相关文章
📜  Python|根据其他列表顺序对列表进行排序(1)

📅  最后修改于: 2023-12-03 14:46:29.164000             🧑  作者: Mango

Python | 根据其他列表顺序对列表进行排序

有时候我们需要根据另一个列表的顺序对一个列表进行排序。在Python中,我们可以使用sorted()函数和key参数来实现这个功能。

方法一:使用key参数

我们可以使用key参数,这个参数接收一个函数作为参数,用来指定排序的依据。在这个函数中,我们可以根据另一个列表中元素的顺序来返回一个排序的关键字。

def sort_by_other_order(arr, order):
    return sorted(arr, key=lambda x: order.index(x))

my_list = [4, 5, 1, 6, 7, 2, 3]
other_order = [7, 6, 5, 4, 3, 2, 1]

sorted_list = sort_by_other_order(my_list, other_order)
print(sorted_list)  # [7, 6, 5, 4, 1, 2, 3]

在上面的代码中,sort_by_other_order()函数接收两个参数:需要排序的列表和参考的列表。在sorted()函数中,我们通过lambda函数指定了排序的关键字。lambda函数中我们使用index()方法来查找参考列表中元素的位置,最终返回这个位置。

方法二:使用zip()函数和sorted()函数

我们也可以使用zip()函数和sorted()函数来实现这个功能。zip()函数可以将两个或多个列表中的元素一一对应起来,sorted()函数会根据这些对应关系进行排序。

def sort_by_other_order(arr, order):
    return [x for _, x in sorted(zip(order, arr))]

my_list = [4, 5, 1, 6, 7, 2, 3]
other_order = [7, 6, 5, 4, 3, 2, 1]

sorted_list = sort_by_other_order(my_list, other_order)
print(sorted_list)  # [7, 6, 5, 4, 1, 2, 3]

在上面的代码中,sort_by_other_order()函数接收两个参数:需要排序的列表和参考的列表。在sorted()函数中,我们使用zip()将两个列表中的元素一一对应起来,然后按照参考列表中元素的顺序进行排序。

总结

根据其他列表顺序对一个列表进行排序是一个常见的需求,Python中内置的sorted()函数提供了非常方便的功能,我们可以使用key参数或者zip()函数来实现这个功能。