我有類似的元組列表bottles = [(1234, 'ICED', 'MOC12', 3), (1234, 'ICED', 'MOC12', 2), (3456, 'HOT', 'CAR23', 1), (3456, 'HOT', 'YUP23', 2)]我想要每個組對應于最后一個字段的最大值的元組。這些組由前三個值定義。輸出:result = [(1234, 'ICED', 'MOC12', 3),(3456, 'HOT', 'CAR23', 1),(3456, 'HOT','YUP23', 2)]
2 回答
猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
根據您的評論,這應該可行:
from itertools import groupby
bottles = [(1234, 'ICED', 'MOC12', 3), (1234, 'ICED', 'MOC12', 2), (3456, 'HOT', 'CAR23', 1), (3456, 'HOT', 'YUP23', 2)]
print([max(group) for key, group in groupby(sorted(bottles), lambda a: a[:3])])
梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
bottles = [(1234, 'ICED', 'MOC12', 3), (1234, 'ICED', 'MOC12', 2), (3456, 'HOT', 'CAR23', 1), (3456, 'HOT', 'YUP23', 2)]
sorted(bottles, key= lambda x: x[:3])
>>> [(1234, 'ICED', 'MOC12', 3),
(1234, 'ICED', 'MOC12', 2),
(3456, 'HOT', 'CAR23', 1),
(3456, 'HOT', 'YUP23', 2)]
您也可以使用max代替直接獲取最大值sorted。
添加回答
舉報
0/150
提交
取消
