为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

扬帆大鱼 2021-04-30 09:11:25
我有类似的元组列表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])])



查看完整回答
反对 回复 2021-05-11
?
梵蒂冈之花

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。


查看完整回答
反对 回复 2021-05-11
  • 2 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号