Python 根据较大列表的顺序对列表进行排序

Python 根据较大列表的顺序对列表进行排序,python,python-3.x,Python,Python 3.x,我有一个有序的列表: 排序=[红、绿、蓝、黄、橙] 还有一个较小的无序列表,我想根据这个列表进行排序: 无序=[蓝色、橙色、红色] 要给出结果: [红色、蓝色、橙色] 这似乎是一个已经被问过的问题,但我已经通过了所有我能找到的类似措辞的问题,没有一个能解决这个问题。我想你可以再做一个第三个列表,按第一个的顺序搜索第二个列表中的项目,然后删除第二个列表中的每一项并替换为第三个列表中的项排序有一个参数,可以让您编写排序函数。您可以按如下方式使用此排序功能: 无序.sortkey=lambda x:o

我有一个有序的列表:

排序=[红、绿、蓝、黄、橙] 还有一个较小的无序列表,我想根据这个列表进行排序:

无序=[蓝色、橙色、红色] 要给出结果:

[红色、蓝色、橙色]
这似乎是一个已经被问过的问题,但我已经通过了所有我能找到的类似措辞的问题,没有一个能解决这个问题。

我想你可以再做一个第三个列表,按第一个的顺序搜索第二个列表中的项目,然后删除第二个列表中的每一项并替换为第三个列表中的项排序有一个参数,可以让您编写排序函数。您可以按如下方式使用此排序功能:

无序.sortkey=lambda x:ordering.indexx
给你的颜色一个数值,并用它们对无序列表进行排序

ordering = ["red", "green", "blue", "yellow", "orange"]

ordering_dict = {key: i for i, key in enumerate(ordering)}
unordered = ["blue", "orange", "red"]

sorted_list = sorted(unordered, key=lambda x: ordering_dict[x])

以下是一个简单的解决方案:

排序=[红、绿、蓝、黄、橙] 无序=[蓝色、橙色、红色] [x表示订购中的x,如果x表示无序]
你这么做有什么困难?@mkrieger1我想不出怎么做。我想我需要某种for循环来循环列表,然后查看项目在更大的列表中出现的位置,然后将该值存储在另一个列表中,但这似乎太复杂了。一个好的答案应该包括显示方法如何在rangelenordering->for I中为I生成预期输出的代码,枚举中的键排序:排序\u dict[key]=i@wwii谢谢,我改编了
ordering = ["red", "green", "blue", "yellow", "orange"]

ordering_dict = {key: i for i, key in enumerate(ordering)}
unordered = ["blue", "orange", "red"]

sorted_list = sorted(unordered, key=lambda x: ordering_dict[x])