gpt4 book ai didi

Python:如何根据另一个 list_of_lists 对 list_of_lists 进行排序?

转载 作者:行者123 更新时间:2023-12-04 13:54:54 24 4
gpt4 key购买 nike

以下是我试图解决的用例:
我有 2 个列表列表:( ld )

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]]
这是一个由两部分组成的问题:
  • 排序 l基于值的优先级。例如:Cancer , EcogFill (在这种情况下 key=(0,1,2) )。它可以是类似 Ecog 的任何内容, Cancer , Fill所以,键=(1,0,2)。
  • 排序 dl 的顺序相同已在上述步骤中排序为 int。

  • 第 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]]
    做这个的最好方式是什么?

    最佳答案

    以下是@juanpa.arrivillaga 帮助下的解决方案:

    In [1272]: import operator
    In [1273]: key = operator.itemgetter(0, 1, 2)

    # Here param key, lets you sort `l` with your own function.
    In [1275]: sorted_l,sorted_d = zip(*sorted(zip(l, d), key=lambda x: key(x[0])))

    In [1276]: sorted_l
    Out[1276]:
    (['Cancer A', 'Ecog 0', 'Fill 0'],
    ['Cancer A', 'Ecog 9', 'Fill 6'],
    ['Cancer B', 'Ecog 1', 'Fill 1'])

    In [1277]: sorted_d
    Out[1277]: ([500], [100], [200])

    关于Python:如何根据另一个 list_of_lists 对 list_of_lists 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64150122/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com