亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

繁星coding 2021-08-14 17:09:58
我有嵌套列表,我試圖找出更好的方法來查找列表具有最大值的總和。以下是我的嵌套列表: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)
查看完整描述

3 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

這是使用max和自定義函數的一種方法:


from operator import itemgetter


res = max(nums, key=lambda x: sum(map(itemgetter(1), x)))


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


查看完整回答
反對 回復 2021-08-14
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

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]


查看完整回答
反對 回復 2021-08-14
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

使用總和作為鍵對元素進行排序:


max(DATA, key=lambda x:x[0][1] + x[1][1])

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

這是發布數據的最快解決方案。


查看完整回答
反對 回復 2021-08-14
  • 3 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號