所以我想知道是否有办法在列表之间实现优先级。例如:
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多个不同的任务。提前谢谢!
答案 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']