[英]How can I group tuples inside a list that have a similar value of one item and then sort them based on another item?
[英]How to group a list of tuples based on similar fields and then keep the maximum based on another field? (without using Pandas)
我有類似的元組列表
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)]
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
直接獲取max。
根據您的評論,這應該可行:
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])])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.