Python 根据其他列表中的值在列表中排序列表

Python 根据其他列表中的值在列表中排序列表,python,list,Python,List,我想根据另一个列表中的值对列表中的列表进行排序。在本例中,第5个订单应放在0和1之前,因为到期日更早 我已经尝试过循环和其他排序方法,但是列表中的列表不是整数,这使得ik对我来说太难了。因此,我不知道如何解决以下问题: orders = [[0, 1, 5], [2, 3 ,4]] ##due date for each order duedates = [5000, 5000, 4500, 3000, 3000, 2750] expected output: [[5,0,1], [4,3,2

我想根据另一个列表中的值对列表中的列表进行排序。在本例中,第5个订单应放在0和1之前,因为到期日更早

我已经尝试过循环和其他排序方法,但是列表中的列表不是整数,这使得ik对我来说太难了。因此,我不知道如何解决以下问题:

orders = [[0, 1, 5], [2, 3 ,4]]
##due date for each order
duedates = [5000, 5000, 4500, 3000, 3000, 2750]

expected output: [[5,0,1], [4,3,2]]

你能试一下吗

>>> import numpy as np
>>> orders = np.array([[0, 1, 5], [2, 3 ,4]])
>>> duedates = np.array([5000, 5000, 4500, 3000, 3000, 2750])
>>> duedates = duedates.reshape(orders.shape)
>>> for i, j in zip(orders, duedates):
...   print([x for __, x in sorted(zip(j, i))])
...
[5, 0, 1]
[4, 2, 3]

你能解释一下你是如何达到预期产出的吗?我是根据其他方法得出的,但是我没有其他的输入可以用来解决这个问题。你有两个列表是输入,一个是输出。用简单的英语说,你希望这里的人有什么逻辑,这样他们就能得到预期的输出。方法能够根据到期日在列表中排序。在本例中:duedate[0]=5000、duedate[1]=5000和duedate[5]=2750。因此,列表中5应在0和1之前。顺序4和3也是一样。这只适用于两种情况,实际上列表更长。你说的更长是什么意思?你有没有在长列表中尝试过这个解决方案?你有没有考虑过在这里改用字典?订单号将是一个很好的键,而它们的截止日期将是它们的值
for order in orders:
    orders_due = [duedates[i] for i in order]
    sorted_order = sorted(zip(order, orders_due), key=lambda x:x[1])
    print([i for (i,j) in sorted_order])