如何根据相似的字段对元组列表进行分组,然后根据另一个字段保留最大的元组列表?

我有类似的元组列表

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)]


扬帆大鱼
浏览 173回答 2
2回答

猛跑小猪

根据您的评论,这应该可行:from itertools import groupbybottles = [(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])])

梵蒂冈之花

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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python