Python 3.x 不同列表之间的Python优先级

Python 3.x 不同列表之间的Python优先级,python-3.x,Python 3.x,所以我想知道是否有一种方法可以实现列表之间的优先级。例如: a = ['a1','a2','a3','a4'] b = ['b1','b2','b3','b4'] user_input ='b1,a1,a2,b3' 所以用户输入是用户输入的一系列任务,如果我们考虑列表中的元素为“任务”。我的问题是如何使程序解释从列表B中的任务比从列表A的任务具有更高的优先级,因此,当用户从上面输入以下序列时,它将按以下顺序执行:b1、b3、a1、a2。 类似的例子也可能出现在电梯上,从电梯内部按下的按钮比从电

所以我想知道是否有一种方法可以实现列表之间的优先级。例如:

a = ['a1','a2','a3','a4']
b = ['b1','b2','b3','b4']
user_input ='b1,a1,a2,b3'

所以用户输入是用户输入的一系列任务,如果我们考虑列表中的元素为“任务”。我的问题是如何使程序解释从列表B中的任务比从列表A的任务具有更高的优先级,因此,当用户从上面输入以下序列时,它将按以下顺序执行:b1、b3、a1、a2。 类似的例子也可能出现在电梯上,从电梯内部按下的按钮比从电梯外部按下的按钮具有更高的优先级。我希望输出到一个列表,该列表保存正确的顺序:

list_result = ['b1','b3','a1','a2']
这只是一个例子,真正的一个可能会节省超过100个不同的任务。提前谢谢

您可以使用sorted来完成此操作。本质上,如何对通过在上拆分用户输入而获得的列表进行排序的关键在于元素是否在最高优先级的列表a中。这是一个True键,将元素放在列表的前面,将False放在后面

这一切都可以在一个整洁的一行中完成:

list_result = sorted(user_input.split(','), key=lambda s: s in a)
给出了以下各项的预期输出:

['b1', 'b3', 'a1', 'a2']

在这种情况下,返回值中的不是False,因此将“b1”移到列表的后面吗?谢谢你的快速回答@zauahiri Python认为True>False,默认情况下,排序的结果按升序排列,从小到大。因此,假在真之前。@Thijs van Dien我错误地认为它首先对原始列表排序,然后拆分,这毫无意义。再次感谢@zauahiri请接受灰色->绿色勾选旁边的答案谢谢!