以下是我试图解决的用例:
我有 2 个列表:(l
and d
)
In [1197]: l
Out[1197]:
[['Cancer A', 'Ecog 9', 'Fill 6'],
['Cancer B', 'Ecog 1', 'Fill 1'],
['Cancer A', 'Ecog 0', 'Fill 0']]
In [1198]: d
Out[1198]: [[100], [200], [500]]
这是一个由两部分组成的问题:
- Sort
l
基于值的优先级。例如:Cancer
, Ecog
and Fill
(在这种情况下key=(0,1,2)
)。它可以是类似的东西Ecog
, Cancer
, Fill
所以,键=(1,0,2)。
- Sort
d
以相同的顺序l
已在上面的步骤中排序。
我能够实现的步骤#1,如下所示:
In [1199]: import operator
In [1200]: sorted_l = sorted(l, key=operator.itemgetter(0,1,2))
In [1201]: sorted_l
Out[1200]:
[['Cancer A', 'Ecog 0', 'Fill 0'],
['Cancer A', 'Ecog 9', 'Fill 6'],
['Cancer B', 'Ecog 1', 'Fill 1']]
现在,我想对以下值进行排序d
按照相同的顺序sorted_l
.
预期输出:
In [1201]: d
Out[1201]: [[500], [100], [200]]
做这个的最好方式是什么?