基于其他列表中的值的列表中的订单列表

时间:2019-04-02 10:45:30

标签: 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]]

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方法吗?

>>> 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]

答案 1 :(得分:0)

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])