首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我有嵌套列表,找到最大成本的任务,但如果两个成本是相同的,那么只保留一个权重较低,也找到第二高成本

我有嵌套列表,找到最大成本的任务,但如果两个成本是相同的,那么只保留一个权重较低,也找到第二高成本
EN

Stack Overflow用户
提问于 2021-08-17 06:47:01
回答 1查看 39关注 0票数 0
代码语言:javascript
复制
ls = [[2, 33.8, 40], [3, 43.15, 10], [4, 37.97, 16], [5, 46.81, 36], [6, 48.77, 79], [8, 19.36, 79], [9, 6.76, 64]]

fn = [ls[0]]

for v in ls:
    if v not in fn:            
        if v[2] == fn[0][2]:
            if (v[2]+v[1]) < (fn[0][1]+fn[0][2]) and len(fn) <=1:
                fn.append(v)
            else:
                fn.append(v)
        if v[2] != fn[0][2] and v[2] > fn[0][2]:
            fn.pop(0)
            fn.append(v)
print(fn)

但它是这样给出的= [6,48.77,79,8,19.36,79]我想先在2个成本相似的地方保留最低的权重,然后找到2个最高的并附加到fn。预期输出[8,19.36,79,9,6.76,64]

在给定列表中,第一个索引(0) -->代表索引,索引(1) -->权重,索引(2) -->成本

例如[2,33.8,40] 2-->索引,33.8 -->权重,40-->成本

EN

Stack Overflow用户

发布于 2021-08-17 07:12:27

这应该会有帮助:

代码语言:javascript
复制
ls = [[2, 33.8, 40],
    [3, 43.15, 10],
    [4, 37.97, 16],
    [5, 46.81, 36],
    [6, 48.77, 79],
    [8, 19.36, 79],
    [9, 6.76, 64]]


def process(mls):
    sl = sorted(mls, reverse=True, key=lambda x: (x[2], x[1]))
    r = [sl[0], None]
    while len(sl) > 2 and sl[0][2] == sl[1][2]:
        r[0], r[1] = sl[1], sl[2]
        sl.pop(0)
    return [x for x in r if x is not None]


print(process(ls))
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68812763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档