不同列表之间的Python优先级

时间:2017-11-30 17:06:56

标签: python-3.x

所以我想知道是否有办法在列表之间实现优先级。例如:

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

因此,如果我们将列表中的元素视为“任务”,那么user_input几乎就是用户输入的任务序列。我的问题是如何让程序解释列表b中的任务具有优先级高于列表a中的任务,因此当用户从上面输入以下序列时,它将按以下顺序执行:b1,b3,a1,a2。 类似的例子可以用电梯给出,其中从内部按钮推动具有比电梯外部的那些更高的优先级。我希望输出到列表,这将保存正确的顺序:

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

这只是一个例子,真正的一个可能会节省100多个不同的任务。提前谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用sorted执行此操作。从本质上讲,key如何对list进行排序(通过在user_input上分割,获得),in就是元素list具有最高优先级{ {1}}(a)。这有效key True会在列表前面添加一个元素,在后面添加False

这一切都可以用一条整齐的方式完成:

list_result = sorted(user_input.split(','), key=lambda s: s in a)

给出了预期的输出:

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