在嵌套列表中查找列表具有最大的值总和

我有嵌套列表,我试图找出更好的方法来查找列表具有最大值的总和。


以下是我的嵌套列表:


nums = [[[1, 3000], [1, 2000]],

        [[1, 3000], [2, 3000]],

        [[1, 3000], [3, 4000]],

        [[2, 5000], [1, 2000]],

        [[2, 5000], [2, 3000]],

        [[2, 5000], [3, 4000]],

        [[3, 4000], [1, 2000]],

        [[3, 4000], [2, 3000]],

        [[3, 4000], [3, 4000]]]

所需的输出 =[[2, 5000], [3, 4000]]因为值的总和最大。


我的做法:


largest = []

for i in range(len(nums)-1):

  if (nums[i][0][1] + nums[i][1][1]) > (nums[i+1][0][1] + nums[i+1][1][1]):

    largest.append(nums[i])

print(largest)


繁星coding
浏览 158回答 3
3回答

ibeautiful

这是使用max和自定义函数的一种方法:from operator import itemgetterres = max(nums, key=lambda x: sum(map(itemgetter(1), x)))[[2, 5000], [3, 4000]]

猛跑小猪

DATA = [    [[1, 3000], [1, 2000]],    [[1, 3000], [2, 3000]],    [[1, 3000], [3, 4000]],    [[2, 5000], [1, 2000]],    [[2, 5000], [2, 3000]],    [[2, 5000], [3, 4000]],    [[3, 4000], [1, 2000]],    [[3, 4000], [2, 3000]],    [[3, 4000], [3, 4000]],]tups = [    (sum(n for _, n in row), row)    for row in DATA]mx = max(tups)print(mx)                        # (9000, [[2, 5000], [3, 4000]])print([xs[0] for xs in mx[1]])   # [2, 3]

慕斯709654

使用总和作为键对元素进行排序:max(DATA, key=lambda x:x[0][1] + x[1][1])#[[2, 5000], [3, 4000]]这是发布数据的最快解决方案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python